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

Последнее обновление - 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

Это снижение стоимости владения

за счет меньшего количества людей для поддержки

Это быстрое внесение изменений

по ходу эксплуатации программы

Это современный интерфейс

полная адаптация под мобильные устройства

Веб-приложения на MS SQL. Партнерская программа для разработчиков и веб-студий

Вы можете разрабатывать самостоятельно или сотрудничать с нами в плане веб-разработки на платформе Falcon Space, используя только SQL и HTML.
Смотреть примеры с кодом SQL
Документация по платформе
Демо-стенд компонентов
На стенде можно посмотреть различные компоненты в действии: таблицы, формы, модальные окна, диаграммы, карта и т.д.
Демо-сайт решений
Базисные решения, которые можно гибко адаптировать под себя: менять внешний вид, бизнес-логику и даже структуру базы данных.
Получить оценку проекта
Создайте концепцию проекта на основе нашего шаблона и получите оценку проекта в виде КП.