Рефакторинг обработчиков. Часть 3 #21

This commit is contained in:
2026-05-13 23:02:59 +03:00
parent 61bb44ab4a
commit 40806df62a
91 changed files with 6138 additions and 7150 deletions
+22 -1
View File
@@ -1,9 +1,23 @@
-module(logic_admin).
-export([list_admins/2, get_admin/1, update_admin/2]).
-export([list_admins/2, get_admin/1, update_admin/2, delete_admin/1, create_admin/3]).
-include("records.hrl").
%% @doc Создаёт нового администратора (доступно только суперадмину).
%% Роль может быть superadmin, admin, moderator или support.
-spec create_admin(binary(), binary(), atom()) ->
{ok, #admin{}} | {error, email_exists | invalid_role}.
create_admin(Email, Password, Role) when Role =:= superadmin; Role =:= admin; Role =:= moderator; Role =:= support ->
case core_admin:get_by_email(Email) of
{ok, _} -> {error, email_exists};
{error, not_found} ->
{ok, PasswordHash} = logic_auth:hash_password(Password),
core_admin:create(Email, PasswordHash, Role)
end;
create_admin(_, _, _) ->
{error, invalid_role}.
%%%-------------------------------------------------------------------
%%% Административный список администраторов с пагинацией
%%%-------------------------------------------------------------------
@@ -39,6 +53,13 @@ update_admin(AdminId, Updates) ->
Error
end.
%%%-------------------------------------------------------------------
%%% Удалить администратора (физическое удаление из базы)
%%%-------------------------------------------------------------------
-spec delete_admin(binary()) -> {ok, deleted} | {error, not_found}.
delete_admin(AdminId) ->
core_admin:delete(AdminId).
%%%===================================================================
%%% Внутренние функции
%%%===================================================================