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 {