From 85fbd37434bc18f1b0f0cc0915d48eb9477a7cf1 Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Thu, 29 Feb 2024 20:55:14 +0100 Subject: [PATCH] Move admin account creation logic to the repository --- .../Controllers/Repositories/UserRepository.cs | 12 ++++++++++++ shell.nix | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/back/src/Kyoo.Core/Controllers/Repositories/UserRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/UserRepository.cs index b07c81ed..c351a420 100644 --- a/back/src/Kyoo.Core/Controllers/Repositories/UserRepository.cs +++ b/back/src/Kyoo.Core/Controllers/Repositories/UserRepository.cs @@ -16,11 +16,13 @@ // You should have received a copy of the GNU General Public License // along with Kyoo. If not, see . +using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Kyoo.Abstractions.Controllers; using Kyoo.Abstractions.Models; +using Kyoo.Abstractions.Models.Permissions; using Kyoo.Abstractions.Models.Utils; using Kyoo.Postgresql; using Microsoft.EntityFrameworkCore; @@ -58,6 +60,16 @@ public class UserRepository(DatabaseContext database, IThumbnailsManager thumbs) /// public override async Task Create(User obj) { + // If no users exists, the new one will be an admin. Give it every permissions. + if (!await _database.Users.AnyAsync()) + { + obj.Permissions = Enum.GetNames() + .Where(x => x != nameof(Group.None)) + .SelectMany(group => + Enum.GetNames().Select(kind => $"{group}.{kind}".ToLowerInvariant()) + ) + .ToArray(); + } await base.Create(obj); _database.Entry(obj).State = EntityState.Added; await _database.SaveChangesAsync(() => Get(obj.Slug)); diff --git a/shell.nix b/shell.nix index 6129db68..82de17e8 100644 --- a/shell.nix +++ b/shell.nix @@ -10,7 +10,7 @@ combinePackages [ sdk_7_0 aspnetcore_7_0 - runtime_6_0 + aspnetcore_6_0 ]; in pkgs.mkShell {