diff --git a/back/src/Kyoo.Abstractions/Models/Attributes/Permission/PartialPermissionAttribute.cs b/back/src/Kyoo.Abstractions/Models/Attributes/Permission/PartialPermissionAttribute.cs index 80bf585b..438b9ac8 100644 --- a/back/src/Kyoo.Abstractions/Models/Attributes/Permission/PartialPermissionAttribute.cs +++ b/back/src/Kyoo.Abstractions/Models/Attributes/Permission/PartialPermissionAttribute.cs @@ -42,7 +42,7 @@ namespace Kyoo.Abstractions.Models.Permissions /// /// The group of this permission. /// - public Group? Group { get; set; } + public Group Group { get; set; } /// /// Ask a permission to run an action. diff --git a/back/src/Kyoo.Abstractions/Models/Attributes/Permission/PermissionAttribute.cs b/back/src/Kyoo.Abstractions/Models/Attributes/Permission/PermissionAttribute.cs index cb17020c..1f43853a 100644 --- a/back/src/Kyoo.Abstractions/Models/Attributes/Permission/PermissionAttribute.cs +++ b/back/src/Kyoo.Abstractions/Models/Attributes/Permission/PermissionAttribute.cs @@ -54,6 +54,11 @@ namespace Kyoo.Abstractions.Models.Permissions /// public enum Group { + /// + /// Default group indicating no value. + /// + None, + /// /// Allow all operations on basic items types. /// diff --git a/back/src/Kyoo.Authentication/Controllers/PermissionValidator.cs b/back/src/Kyoo.Authentication/Controllers/PermissionValidator.cs index 5defc9c2..dd198d93 100644 --- a/back/src/Kyoo.Authentication/Controllers/PermissionValidator.cs +++ b/back/src/Kyoo.Authentication/Controllers/PermissionValidator.cs @@ -93,7 +93,7 @@ namespace Kyoo.Authentication /// /// The group of he permission. /// - private readonly Group _group = Group.Overall; + private Group _group; /// /// The permissions options to retrieve default permissions. @@ -146,7 +146,7 @@ namespace Kyoo.Authentication ); } - if (group != null) + if (group is not null and not Group.None) _group = group.Value; _options = options; } @@ -159,6 +159,16 @@ namespace Kyoo.Authentication if (permission == null || kind == null) { + if ( + context.HttpContext.Items["PermissionGroup"] + is Group group and not Group.None + ) + _group = group; + else if (_group == Group.None) + _group = Group.Overall; + else + context.HttpContext.Items["PermissionGroup"] = _group; + switch (context.HttpContext.Items["PermissionType"]) { case string perm: