1
0
mirror of https://github.com/bitwarden/server.git synced 2025-06-30 07:36:14 -05:00

[PM-19585] Use Authorize attributes for simple role authorization (#5555)

- Add Authorize<T> attribute
- Add IOrganizationRequirement and example implementation
- Add OrganizationRequirementHandler
- Add extension methods (replacing ICurrentContext)
- Move custom permissions claim definitions

---
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
Co-authored-by:  Audrey  <ajensen@bitwarden.com>
This commit is contained in:
Thomas Rittson
2025-04-15 14:36:00 +10:00
committed by GitHub
parent c9a42d861c
commit 84a984a9e6
16 changed files with 590 additions and 16 deletions

View File

@ -4,7 +4,7 @@ using Bit.Core.Models.Data;
namespace Bit.Core.Test.AdminConsole.Helpers;
public static class AuthorizationHelpers
public static class PermissionsHelpers
{
/// <summary>
/// Return a new Permission object with inverted permissions.
@ -36,6 +36,24 @@ public static class AuthorizationHelpers
return result;
}
/// <summary>
/// Returns a sequence of Permission objects, where each Permission object has a different permission flag set.
/// </summary>
public static IEnumerable<Permissions> GetAllPermissions()
{
// Get all boolean properties of input object
var props = typeof(Permissions)
.GetProperties()
.Where(p => p.PropertyType == typeof(bool));
foreach (var prop in props)
{
var result = new Permissions();
prop.SetValue(result, true);
yield return result;
}
}
/// <summary>
/// Returns a sequence of all possible roles and permissions represented as CurrentContextOrganization objects.
/// Used largely for authorization testing.

View File

@ -3,7 +3,7 @@ using Xunit;
namespace Bit.Core.Test.AdminConsole.Helpers;
public class AuthorizationHelpersTests
public class PermissionsHelpersTests
{
[Fact]
public void Permissions_Invert_InvertsAllPermissions()