From 7ead76fbccee7a6e20bfa5327e44bdb209576169 Mon Sep 17 00:00:00 2001 From: mxritzdev Date: Sat, 17 May 2025 17:53:05 +0200 Subject: [PATCH] Implemented First User Admin Feature --- .../Configuration/AppConfiguration.cs | 2 ++ .../Http/Controllers/OAuth2/OAuth2Controller.cs | 13 +++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Moonlight.ApiServer/Configuration/AppConfiguration.cs b/Moonlight.ApiServer/Configuration/AppConfiguration.cs index 004f4c44..22096878 100644 --- a/Moonlight.ApiServer/Configuration/AppConfiguration.cs +++ b/Moonlight.ApiServer/Configuration/AppConfiguration.cs @@ -44,6 +44,8 @@ public class AppConfiguration public string? AuthorizationEndpoint { get; set; } public string? AccessEndpoint { get; set; } public string? AuthorizationRedirect { get; set; } + + public bool FirstUserAdmin { get; set; } = true; } } diff --git a/Moonlight.ApiServer/Http/Controllers/OAuth2/OAuth2Controller.cs b/Moonlight.ApiServer/Http/Controllers/OAuth2/OAuth2Controller.cs index 37d2c555..7f2332a5 100644 --- a/Moonlight.ApiServer/Http/Controllers/OAuth2/OAuth2Controller.cs +++ b/Moonlight.ApiServer/Http/Controllers/OAuth2/OAuth2Controller.cs @@ -273,13 +273,22 @@ public class OAuth2Controller : Controller if (await UserRepository.Get().AnyAsync(x => x.Email == email)) throw new HttpApiException("A account with that email already exists", 400); - + var user = new User() { Username = username, Email = email, - Password = HashHelper.Hash(password) + Password = HashHelper.Hash(password), }; + + if (Configuration.Authentication.OAuth2.FirstUserAdmin) + { + var userCount = await UserRepository.Get().CountAsync(); + + if (userCount == 0) + user.PermissionsJson = "[\"*\"]"; + + } return await UserRepository.Add(user); }