Формы. Как сделать подтверждение действие в СМС (SMS) в форме

Для внедрения в форму возможности подтверждения по СМС или Email необходимо сделать следующее: 

1. Добавить на форму кнопку 

<a href="#" class="as-form-confirm">Confirm</a>   

2. Скрыть основную кнопку сохранения (при этом она должна быть на форме!)

.as-form[data-code=client] .as-form-submit{ display: none; }

3. Создать процедуру для метода request, где модуль - это код формы (в данном случае client). 

create PROCEDURE [dbo].[request_client_confirm]
	@parameters DictionaryParameter READONLY,
	@username nvarchar(32)
AS
BEGIN
        -- SELECT 1
	select 'Все ок' Msg, 1 Result
	declare @guid uniqueidentifier = newid()

        -- генерируем код
	DECLARE @code nvarchar(128);
	declare @count int = 4
	SET @code = (SELECT c1 AS [text()]
		FROM( SELECT TOP (@count) c1 FROM  ( VALUES ('0'), ('1'), ('2'), ('3'), ('4'), ('5'), ('6'), ('7'), ('8'), ('9')) AS T1(c1)
		ORDER BY ABS(CHECKSUM(NEWID()))
	) AS T2 FOR XML PATH(''));

        -- SELECT 2 - отдаем guid для будущей проверки при сохранении.
	select @guid [guid]

        -- сохраняем код и Guid для будущей проверки в SaveItem
	insert into as_confirms ([guid], code, date) values (@guid, @code, getdate())

        -- отправляем на почту (или SMS) сгенерированный код
	select 'email' type,   -- email, sms, notification, clearcache
    'user@mail.ru' [to], 'Код подтверждения' subject, 'Код проверки - '+@code body

END

4. в SaveItem делаем проверку кода

    -- на входе в @itemID = @itemID_guid_usercode
    declare @guid nvarchar(256), @code nvarchar(128), @instanceID int
    set @instanceID = try_cast( dbo.str_splitPart(@itemID, '_', 1) as int)

    set @code =  dbo.str_splitPart(@itemID, '_', 2)

    set @guid =  dbo.str_splitPart(@code, '_', 1)
    set @code =  dbo.str_splitPart(@code, '_', 2)

    if( not exists (select id from as_confirms where guid = @guid and code = @code and date > dateadd(minute, -10, getdate()))) begin
    	select 0 Result, 'Неверный код' Msg
        return
    end
    -- ... дальше идет сохранение формы

Настройки окна подтверждения

Вы можете указать настройки в атрибутах кнопки as-form-confirm

  • data-title - заголовок модального окна.
  • data-text - текст-описание в модальном окне
  • data-placeholder - текст подсказки для текстового поля ввода
  • data-btnText - текст кнопки в модальном окне.
  • data-resendDelay - если указано, то на данное количество миллисекунд задерживатся показ кнопки Отправить заново (реинициализация окна + отправка заново sms или почты). Если не указан атрибут, то не будет выводиться данная кнопка. 
  • data-resendBtnText - текст кнопки Отправить заново.

Примечание

  • На форме не используем {form-result}, чтобы сообщения показывались во всплывающем окне.
  • Везде в процедурах, где используется параметр @itemID делаем его nvarchar(256) - проверьте GetItem, CheckItem, SaveItem и dict процедуры

Платформа Falcon Space

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

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

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

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

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

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

Бесплатное обучение разработке на Falcon Space

Вы можете разрабатывать самостоятельно или сотрудничать с нами в плане веб-разработки на платформе Falcon Space.
Примечание