diff --git a/src/eventhub_app.erl b/src/eventhub_app.erl index 03e142d..672a225 100644 --- a/src/eventhub_app.erl +++ b/src/eventhub_app.erl @@ -48,6 +48,7 @@ start(_StartType, _StartArgs) -> start_swagger_http(), % Swagger UI и спецификация (8447) application:ensure_all_started(prometheus), application:ensure_all_started(prometheus_cowboy), + init_default_admins(), {ok, Pid}; Error -> Error @@ -177,6 +178,37 @@ start_swagger_http() -> cowboy:start_clear(swagger_http, [{port, PortSwagger}], #{env => Env, middlewares => Middlewares}), io:format("Swagger HTTP server started on port ~p~n", [PortSwagger]). +%% ---------- Инициализация администраторов ---------- +init_default_admins() -> + case core_admin:list_all() of + [] -> + % Суперадмин + SuperEmail = list_to_binary(os:getenv("ADMIN_SUPER_EMAIL", "superadmin@eventhub.local")), + SuperPass = list_to_binary(os:getenv("ADMIN_SUPER_PASSWORD", "123456")), + {ok, _} = core_admin:create(SuperEmail, SuperPass, superadmin), + io:format("Default superadmin created: ~s~n", [SuperEmail]), + + % Админ + AdminEmail = list_to_binary(os:getenv("ADMIN_EMAIL", "admin@eventhub.local")), + AdminPass = list_to_binary(os:getenv("ADMIN_PASSWORD", "123456")), + {ok, _} = core_admin:create(AdminEmail, AdminPass, admin), + io:format("Default admin created: ~s~n", [AdminEmail]), + + % Модератор + ModerEmail = list_to_binary(os:getenv("ADMIN_MODER_EMAIL", "moderator@eventhub.local")), + ModerPass = list_to_binary(os:getenv("ADMIN_MODER_PASSWORD", "123456")), + {ok, _} = core_admin:create(ModerEmail, ModerPass, moderator), + io:format("Default moderator created: ~s~n", [ModerEmail]), + + % Поддержка + SupportEmail = list_to_binary(os:getenv("ADMIN_SUPPORT_EMAIL", "support@eventhub.local")), + SupportPass = list_to_binary(os:getenv("ADMIN_SUPPORT_PASSWORD", "123456")), + {ok, _} = core_admin:create(SupportEmail, SupportPass, support), + io:format("Default support created: ~s~n", [SupportEmail]); + _ -> + io:format("Admins already exist. Skipping creation.~n") + end. + get_env_int(Key, Default) -> case application:get_env(eventhub, Key, Default) of Val when is_list(Val) -> list_to_integer(Val); diff --git a/src/infra/infra_mnesia.erl b/src/infra/infra_mnesia.erl index 97d731a..dda29db 100644 --- a/src/infra/infra_mnesia.erl +++ b/src/infra/infra_mnesia.erl @@ -63,7 +63,6 @@ handle_call(init_tables, _From, State) -> ok = create_indices(), ok = stats_collector:subscribe(), ok = start_cleanup_timer(), - init_default_admins(), {reply, ok, State}; handle_call({add_nodes, Nodes}, _From, State) -> @@ -185,37 +184,6 @@ prune_dead_nodes() -> catch mnesia:del_table_copy(schema, Node) end, DeadNodes). -%% ---------- Инициализация администраторов ---------- -init_default_admins() -> - case core_admin:list_all() of - [] -> - % Суперадмин - SuperEmail = list_to_binary(os:getenv("ADMIN_SUPER_EMAIL", "superadmin@eventhub.local")), - SuperPass = list_to_binary(os:getenv("ADMIN_SUPER_PASSWORD", "123456")), - {ok, _} = core_admin:create(SuperEmail, SuperPass, superadmin), - io:format("Default superadmin created: ~s~n", [SuperEmail]), - - % Админ - AdminEmail = list_to_binary(os:getenv("ADMIN_EMAIL", "admin@eventhub.local")), - AdminPass = list_to_binary(os:getenv("ADMIN_PASSWORD", "123456")), - {ok, _} = core_admin:create(AdminEmail, AdminPass, admin), - io:format("Default admin created: ~s~n", [AdminEmail]), - - % Модератор - ModerEmail = list_to_binary(os:getenv("ADMIN_MODER_EMAIL", "moderator@eventhub.local")), - ModerPass = list_to_binary(os:getenv("ADMIN_MODER_PASSWORD", "123456")), - {ok, _} = core_admin:create(ModerEmail, ModerPass, moderator), - io:format("Default moderator created: ~s~n", [ModerEmail]), - - % Поддержка - SupportEmail = list_to_binary(os:getenv("ADMIN_SUPPORT_EMAIL", "support@eventhub.local")), - SupportPass = list_to_binary(os:getenv("ADMIN_SUPPORT_PASSWORD", "123456")), - {ok, _} = core_admin:create(SupportEmail, SupportPass, support), - io:format("Default support created: ~s~n", [SupportEmail]); - _ -> - io:format("Admins already exist. Skipping creation.~n") - end. - %% =================================================================== %% Создание / открытие таблиц %% ===================================================================