РуководстваОснова Falcon SpaceОсновные компонентыВозможностиКоммуникация пользователейДизайн, стилизация, юзабилитиЛендингиУниверсальный APIИнтеграцииКаталогиНавигацияДокументыДополнительные компонентыПродвижение, SEOСистемные моментыСистемное администрированиеHOWTOТаблицыФормыПоля формыЗагрузка файлов, картинокHOWTO SQLHOWTO JSHOWTO ВерсткаРешение проблем
Выгода от использования Falcon Space
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Как создать кастом форму с подтверждением действия по Email или SMS
C помощью кода JS и запросов RequestJS мы можем создать функционал кастомной формы, в которой действие будет подтверждаться по Email или SMS.
Код JS на странице:
$(function(){
$(document).delegate('.ae-sendCode', 'click', function(e){
e.preventDefault();
var contact = $('.ae-contact').val();
if(!contact) {
$('.ae-contact').focus();
return;
}
// запрашиваем код для юзера
as.sys.request("auth", "sendCode", {
data: { contact:contact },
onSuccess: function (data) {
if (data.result && data.data && data.data.length) {
console.log(data.data);
var s = '';
as.sys.showDialog("Введите код", s, "OK", function () {
var code = $('.ae-code').val();
if(!code) {
$('.ae-code').focus();
return;
}
// проверяем код и выполняем целевое действие
as.sys.request("auth", "verifyCode", {
data: { contact:contact, code: code },
onSuccess: function (data) {
if (data.result && data.data && data.data.length) {
location.href='/';
}else{
as.sys.bootstrapAlert(data.msg || "Неверный код, либо пользователь заблокирован", {type: "warning"});
}
}
});
});
}else {
as.sys.bootstrapAlert(data.msg || "Что-то пошло не так. Проверьте указанный контакт.", {type: "warning"})
}
}
});
});
});
Код первой процедуры SQL (отправка кода пользователю на email через внешнее действие):
CREATE OR ALTER PROCEDURE [dbo].[request_auth_sendCode]
@parameters DictionaryParameter READONLY, -- or ExtendedDictionaryParameter
@username nvarchar(32)
AS
BEGIN
declare @code nvarchar(32) = upper(left(convert(nvarchar(36), newid()), 5)) -- 'xxx12'
declare @contact nvarchar(128)
select @contact = Value from @parameters where [Key]='contact'
declare @userID int, @email nvarchar(128)
select @userID = id, @email = email from as_users where lower(email)=lower(@contact)
if(@userID is null) begin
select 'Не найден указанный email' Msg, 0 Result
return
end
update as_users set sessionCode=@code, sessionCodeCreated = getdate()
where id = @userID
-- SELECT 1 Msg, Result
select '' Msg, 1 Result
-- SELECT 2 Основные данные в виде произвольной таблицы
select 1 tst
-- SELECT 3 Внешние действия
declare @body nvarchar(max) = 'Код для ввода на сайте - ' + @code
select 'email' type, @email [to], 'Подтверждение действия' subject, @body body
END
Вторая процедура SQL (проверка кода и выполнение целевого действия):
CREATE OR ALTER PROCEDURE [dbo].[request_auth_verifyCode]
@parameters DictionaryParameter READONLY, -- or ExtendedDictionaryParameter
@username nvarchar(32)
AS
BEGIN
declare @contact nvarchar(128)
select @contact = Value from @parameters where [Key]='contact'
declare @code nvarchar(128)
select @code = Value from @parameters where [Key]='code'
declare @userID int,@date datetime , @user nvarchar(128)
select @userID = id, @date = sessionCodeCreated, @user = username from as_users where lower(email)=lower(@contact) and lower(sessionCode)=lower(@code)
if(@userID is null) begin
select 'Неверный код' Msg, 0 Result
return
end
if(datediff(minute, getdate(), @date) > 20) begin
select 'Истекло время ожидания. Попробуйте заново отправить код' Msg, 0 Result
return
end
-- SELECT 1 Msg, Result
select '' Msg, 1 Result
-- SELECT 2 Основные данные в виде произвольной таблицы
select 1 tst
-- SELECT 3 Внешние действия
--- если все ОК - то выполняем целевое действие ....
END
Примечание:
- в таблице as_users 2 дополнительные поля sessionCode и SessionCodeCreated - для хранения текущего запрошенного кода и времени создания кода (чтобы он действовал в течение короткого промежутка времени)
Falcon Space - функциональная веб-платформа разработки на узком стеке MS SQL/Bootstrap. Вводная по Falcon Space
Google поиск по нашей документации
Нужна бесплатная консультация?
Планируете делать веб-проект?
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта