Сделано подтверждение регистрации пользователей #22

This commit is contained in:
2026-05-27 21:44:13 +03:00
parent b78df927dd
commit 4444461ee3
17 changed files with 358 additions and 48 deletions
+25 -1
View File
@@ -40,6 +40,7 @@
client_put/3,
client_delete/2,
admin_patch/3]).
-export([verify_user/2]).
%%%===================================================================
%%% Конфигурация окружения (CT_MODE, ...)
@@ -281,10 +282,23 @@ future_date() ->
-spec register_and_login(binary(), binary()) -> binary().
register_and_login(Email, Password) ->
% 1. Регистрируем пользователя
Resp = client_request(post, <<"/v1/register">>, <<>>,
jsx:encode(#{email => Email, password => Password})),
{ok, 201, _, Body} = Resp,
#{<<"token">> := Token} = jsx:decode(list_to_binary(Body), [return_maps]),
#{<<"user">> := #{<<"id">> := UserId}} = jsx:decode(list_to_binary(Body), [return_maps]),
% 2. Получаем админский токен (используется кеширование)
AdminToken = get_admin_token(),
% 3. Верифицируем пользователя
verify_user(AdminToken, UserId),
% 4. Логинимся и возвращаем свежий JWT
LoginResp = client_request(post, <<"/v1/login">>, <<>>,
jsx:encode(#{email => Email, password => Password})),
{ok, 200, _, LoginBody} = LoginResp,
#{<<"token">> := Token} = jsx:decode(list_to_binary(LoginBody), [return_maps]),
Token.
-spec create_calendar(binary(), map()) -> binary().
@@ -298,6 +312,16 @@ create_event(Token, CalId, Params) ->
#{<<"id">> := EventId} = client_post(Path, Token, Params),
EventId.
%% @doc Подтверждает email пользователя, используя админский эндпоинт
%% для получения верификационного токена и публичный /v1/verify.
-spec verify_user(AdminToken :: binary(), UserId :: binary()) -> ok.
verify_user(AdminToken, UserId) ->
#{<<"token">> := Token} = admin_get(
<<"/v1/admin/users/", UserId/binary, "/verification-token">>, AdminToken),
{ok, 200, _, _} = client_request(post, <<"/v1/verify">>, <<>>,
jsx:encode(#{<<"token">> => Token})),
ok.
%%%===================================================================
%%% Внутренние функции
%%%===================================================================