Ролевая модель и аудит Часть 1.
This commit is contained in:
@@ -40,21 +40,21 @@ report_error(ErrorMessage, Stacktrace, Context) ->
|
||||
|
||||
%% Получить тикет (только для админов)
|
||||
get_ticket(AdminId, TicketId) ->
|
||||
case is_admin(AdminId) of
|
||||
case admin_utils:is_admin(AdminId) of
|
||||
true -> core_ticket:get_by_id(TicketId);
|
||||
false -> {error, access_denied}
|
||||
end.
|
||||
|
||||
%% Список всех тикетов (только для админов)
|
||||
list_tickets(AdminId) ->
|
||||
case is_admin(AdminId) of
|
||||
case admin_utils:is_admin(AdminId) of
|
||||
true -> core_ticket:list_all();
|
||||
false -> {error, access_denied}
|
||||
end.
|
||||
|
||||
%% Список тикетов по статусу (только для админов)
|
||||
list_tickets_by_status(AdminId, Status) ->
|
||||
case is_admin(AdminId) of
|
||||
case admin_utils:is_admin(AdminId) of
|
||||
true ->
|
||||
All = core_ticket:list_all(),
|
||||
[T || T <- All, T#ticket.status =:= Status];
|
||||
@@ -63,21 +63,21 @@ list_tickets_by_status(AdminId, Status) ->
|
||||
|
||||
%% Обновить статус тикета
|
||||
update_status(AdminId, TicketId, Status) ->
|
||||
case is_admin(AdminId) of
|
||||
case admin_utils:is_admin(AdminId) of
|
||||
true -> core_ticket:update_ticket(TicketId, #{<<"status">> => Status});
|
||||
false -> {error, access_denied}
|
||||
end.
|
||||
|
||||
%% Назначить тикет администратору
|
||||
assign_ticket(AdminId, TicketId, AssignToId) ->
|
||||
case is_admin(AdminId) of
|
||||
case admin_utils:is_admin(AdminId) of
|
||||
true -> core_ticket:update_ticket(TicketId, #{<<"assigned_to">> => AssignToId});
|
||||
false -> {error, access_denied}
|
||||
end.
|
||||
|
||||
%% Отметить тикет как решённый с примечанием
|
||||
resolve_ticket(AdminId, TicketId, ResolutionNote) ->
|
||||
case is_admin(AdminId) of
|
||||
case admin_utils:is_admin(AdminId) of
|
||||
true ->
|
||||
core_ticket:update_ticket(TicketId, #{
|
||||
<<"status">> => <<"closed">>,
|
||||
@@ -88,14 +88,14 @@ resolve_ticket(AdminId, TicketId, ResolutionNote) ->
|
||||
|
||||
%% Закрыть тикет
|
||||
close_ticket(AdminId, TicketId) ->
|
||||
case is_admin(AdminId) of
|
||||
case admin_utils:is_admin(AdminId) of
|
||||
true -> core_ticket:update_ticket(TicketId, #{<<"status">> => <<"closed">>});
|
||||
false -> {error, access_denied}
|
||||
end.
|
||||
|
||||
%% Получить статистику по тикетам
|
||||
get_statistics(AdminId) ->
|
||||
case is_admin(AdminId) of
|
||||
case admin_utils:is_admin(AdminId) of
|
||||
true ->
|
||||
All = core_ticket:list_all(),
|
||||
Open = length([T || T <- All, T#ticket.status =:= open]),
|
||||
@@ -116,11 +116,5 @@ get_statistics(AdminId) ->
|
||||
|
||||
%% ============ Вспомогательные функции ============
|
||||
|
||||
is_admin(UserId) ->
|
||||
case core_user:get_by_id(UserId) of
|
||||
{ok, User} -> User#user.role =:= admin;
|
||||
_ -> false
|
||||
end.
|
||||
|
||||
notify_admins(_Ticket) ->
|
||||
ok.
|
||||
Reference in New Issue
Block a user