42 lines
1.3 KiB
C#
42 lines
1.3 KiB
C#
using Disco.Services.Users;
|
|
|
|
namespace Disco.Services.Authorization
|
|
{
|
|
public class DiscoAuthorizeAttribute : DiscoAuthorizeBaseAttribute
|
|
{
|
|
string authorizedClaim;
|
|
|
|
public DiscoAuthorizeAttribute() { }
|
|
|
|
public DiscoAuthorizeAttribute(string AuthorisedClaim)
|
|
{
|
|
authorizedClaim = AuthorisedClaim;
|
|
}
|
|
|
|
public override bool IsAuthorized(System.Web.HttpContextBase httpContext)
|
|
{
|
|
if (Token == null)
|
|
return false; // No Current User
|
|
|
|
if (authorizedClaim == null)
|
|
return Token.RoleTokens.Count > 0; // Just Authenticate - no Authorization (but require at least 1 role)
|
|
else
|
|
return Token.Has(authorizedClaim);
|
|
}
|
|
|
|
public override string HandleUnauthorizedMessage()
|
|
{
|
|
string resultMessage;
|
|
|
|
if (UserService.CurrentAuthorization == null)
|
|
resultMessage = AuthorizationToken.RequireAuthenticationMessage;
|
|
else if (string.IsNullOrEmpty(authorizedClaim))
|
|
resultMessage = AuthorizationToken.RequireDiscoAuthorizationMessage;
|
|
else
|
|
resultMessage = AuthorizationToken.BuildRequireMessage(authorizedClaim);
|
|
|
|
return resultMessage;
|
|
}
|
|
}
|
|
}
|