public async Task CheckPermissions_DoesntHavePermission_Fail() { // arrange var permission = new PermissionDescriptor <bool>("Test"); var participantPermissions = CreateParticipantPermissions(); var context = CreateContext(builder => builder.RegisterInstance(participantPermissions).AsImplementedInterfaces()); // act var result = await ServiceInvokerPermissionMiddleware.CheckPermissions(context, permission); // assert Assert.False(result.Success); Assert.Equal(result.Error?.Code, CommonError.PermissionDenied(permission).Code); }
public static async ValueTask <SuccessOrError <Unit> > CheckPermissions(ServiceInvokerContext context, params PermissionDescriptor <bool>[] requiredPermissions) { if (requiredPermissions.Length == 0) { return(SuccessOrError <Unit> .Succeeded(Unit.Value)); } var participantPermissions = context.Context.Resolve <IParticipantPermissions>(); var permissions = await participantPermissions.FetchForParticipant(context.Participant); foreach (var permission in requiredPermissions) { var permissionValue = await permissions.GetPermissionValue(permission); if (!permissionValue) { return(CommonError.PermissionDenied(permission)); } } return(SuccessOrError <Unit> .Succeeded(Unit.Value)); }