Как создать форму настроек для неавторизованного пользователя
Как сохранить настройки неавторизованного пользователя?
По какому признаку идентификаировать таких пользователей?
У каждого пользователя есть куки falconGuid. Этот куки передается в различные процедуры в параметре parameters (с ключом falconGuid).
Пример сохранения настроек пользователя:
1. Создаем таблицу
CREATE TABLE [dbo].[as_userSettings](
[id] [int] IDENTITY(1,1) NOT NULL,
[falconGuid] [uniqueidentifier] NULL,
[username] [nvarchar](128) NULL,
[enableAnimation] [bit] NULL,
[horizontalMainMenu] [bit] NULL,
[theme] [nvarchar](32) NULL,
CONSTRAINT [PK_as_userSettings] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
2. Создаем форму
в GetItem извлекаем данные пользователя
CREATE PROCEDURE [dbo].[fm_userLayoutSettings_getItem]
@itemID int,
@username nvarchar(256),
@parameters ExtendedDictionaryParameter READONLY
AS
BEGIN
declare @userGuid uniqueidentifier
select @userGuid = try_cast(Value as uniqueidentifier) from @parameters where [Key] = 'falconGuid'
declare @id int
select @id = id from as_userSettings where falconGuid = @userGuid
if(@id is null) begin
insert into as_userSettings(falconGuid, username, enableAnimation, horizontalMainMenu, theme)
values(@userGuid, @username, 1, 0, '')
end
select * from as_userSettings where falconGuid = @userGuid
END
3. В SaveItem сохраняем данные
CREATE PROCEDURE [dbo].[fm_userLayoutSettings_saveItem]
@username nvarchar(256),
@itemID int,
@parameters ExtendedDictionaryParameter READONLY
-- либо перечислить все поля в форме (@fieldcode и т.д.)
AS
BEGIN
declare @userGuid uniqueidentifier
select @userGuid = try_cast(Value as uniqueidentifier) from @parameters where [Key] = 'falconGuid'
declare @penableAnimation bit
select @penableAnimation = try_cast(Value2 as bit) from @parameters where [key]='enableAnimation'
declare @phorizontalMainMenu bit
select @phorizontalMainMenu = try_cast(Value2 as bit) from @parameters where [key]='horizontalMainMenu'
declare @ptheme nvarchar(max)
select @ptheme = Value2 from @parameters where [key]='theme'
if(@ptheme not in ('bodro', 'cyan', 'dark', 'darkPurple', 'deepBlue', 'gray', 'green', 'orange',
'pink', 'purple2', 'roundGrayYellow', 'strongBlue', 'violet', 'violetBlue', 'wine')) set @ptheme = ''
update as_userSettings
set enableAnimation = @penableAnimation, horizontalMainMenu= @phorizontalMainMenu, theme = @ptheme
where falconGuid = @userGuid
-- SELECT 1 (Result, Msg, SuccessUrl, HideFormAfterSubmit, RefreshContainer)
select 1 Result, 'OK' Msg, 'reload' SuccessUrl, 1 HideFormAfterSubmit, '' RefreshContainer
END
4. Эти параметры можно затем использовать в других формах или в GetLayout
CREATE PROCEDURE [dbo].[falcon_getLayoutInfo]
@url nvarchar(256),
@username nvarchar(128),
@langID int = 0,
@parameters ExtendedDictionaryParameter READONLY
AS
BEGIN
declare @userGuid uniqueidentifier
select @userGuid = try_cast(Value as uniqueidentifier) from @parameters where [Key] = 'falconGuid'
declare @needGeo bit = 0
if( CHARINDEX('tst-map',@url) > 0 ) begin
set @needGeo=1
end
declare @enableAnimation bit, @horizontalMainMenu bit, @theme nvarchar(128)
select @enableAnimation = enableAnimation, @horizontalMainMenu = horizontalMainMenu,@theme = theme
from as_userSettings where falconGuid = @userGuid
set @enableAnimation = isnull(@enableAnimation, 1)
set @horizontalMainMenu = isnull(@horizontalMainMenu, 0)
set @theme = isnull(@theme, '')
-- SELECT 1
select
@theme theme,
iif(@horizontalMainMenu=1, 'as-horizontalMainMenu', '') bodyClass,
@enableAnimation enableAnimation,
END
Другие темы
Не выводится столбец в таблице
Как обновить форму после сохранения без перезагрузки страницы?
Как проверить значение переменной в хранимой процедуре?
Что делать если открытая вкладка(tab) сбрасывается при перезагрузке страницы?
Как передать в форму скрытый параметр?
Как сохранить значение поля в браузере?
SQL-инструмент для создания личных кабинетов на сайте
Выгода от использования Falcon Space
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Разработчик SQL, нужны клиенты и заказы?
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта