Как создать форму настроек для неавторизованного пользователя

Последнее обновление - 14.05.2021ru14.05.2021 1

Как сохранить настройки неавторизованного пользователя? 

По какому признаку идентификаировать таких пользователей? 

У каждого пользователя есть куки 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
	

 


Другие темы

SQL-инструмент для создания личных кабинетов на сайте

Суть подхода и история создания Falcon Space

Выгода от использования Falcon Space

В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности

Разработчик SQL, нужны клиенты и заказы?

Прямые заказы от клиентов. Нужно знать только SQL и HTML
Работа на MS SQL Server
Нужна бесплатная консультация?
Планируете делать веб-проект?
Сайт использует Cookie. Правила конфиденциальности OK