private Task ReplyPermissions(IClaimCollection claims) { var b = new StringBuilder(); b.AppendLine($"The following permissions are set for {claims.Subject.MentionString}:"); if (claims !.Claims.Count > 0) { var maxWidth = claims.Claims.Max(c => c.Identifier.Length); foreach (var claim in claims.Claims) { b.AppendLine($"`{claim.Identifier.PadRight(maxWidth)} {claim.Allow}`"); } }
public static bool IsAllowed(IClaimCollection claims, string requiredPermission, bool inheritParentPermission) { var permissionName = requiredPermission; do { var claim = claims.Claims.FirstOrDefault(c => c.Identifier == permissionName); if (claim is not null) { return(claim.Allow); } var parentNameEndIndex = permissionName.IndexOf('.'); if (parentNameEndIndex == -1) { break; } permissionName = permissionName.Substring(0, parentNameEndIndex); } while (inheritParentPermission); return(false); }