Рефакторинг обработчиков. Часть 3 #21
This commit is contained in:
@@ -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).
|
||||
|
||||
%%%===================================================================
|
||||
%%% Внутренние функции
|
||||
%%%===================================================================
|
||||
|
||||
Reference in New Issue
Block a user