feat(auth): list/revoke sessions with device_name and client_type. Fixes EventHub/EventHubBack#74
CI / test (push) Failing after 10m52s
CI / deploy-ift (push) Has been skipped
CI / e2e-ift (push) Has been skipped
CI / deploy-stage (push) Has been skipped
CI / e2e-stage (push) Has been skipped

This commit is contained in:
2026-08-16 18:30:05 +03:00
parent 1c701a5254
commit 0690020e81
16 changed files with 482 additions and 62 deletions
@@ -0,0 +1,45 @@
%% @doc Add device_name and user_agent to auth_session (Back#74).
-module('20260816180000_auth_session_device').
-export([up/0, down/0]).
-include("records.hrl").
up() ->
case table_exists(auth_session) of
false ->
ok;
true ->
ensure_device_fields(),
ok
end.
down() ->
ok.
table_exists(Table) ->
try lists:member(Table, mnesia:system_info(tables))
catch
_:_ -> false
end.
ensure_device_fields() ->
Attrs = mnesia:table_info(auth_session, attributes),
case lists:member(device_name, Attrs) andalso lists:member(user_agent, Attrs) of
true ->
ok;
false ->
Fun = fun(Rec) ->
case tuple_size(Rec) of
%% auth_session atom + 10 fields (pre-device)
11 ->
list_to_tuple(tuple_to_list(Rec) ++ [<<>>, <<>>]);
_ ->
Rec
end
end,
case mnesia:transform_table(auth_session, Fun, record_info(fields, auth_session)) of
{atomic, ok} -> ok;
{aborted, Reason} -> error({transform_auth_session_failed, Reason})
end
end.