Something like this might point you in the right direction;
using System;
using System.Security;
using System.Security.Permissions;
namespace AccessThingie {
[Serializable]
[AttributeUsageAttribute(AttributeTargets.Method)]
public class IsAuthorized : CodeAccessSecurityAttribute {
private static readonly PrincipalPermission Allowed = new PrincipalPermission(PermissionState.None);
private static readonly PrincipalPermission NotAllowed = new PrincipalPermission(PermissionState.Unrestricted);
public static class Rights
{
public const string None = "None";
public const string CreateUserGroup = "CreateUserGroup";
}
public string Right { get; set; }
public IsAuthorized(SecurityAction action)
: base(action)
{
}
public override IPermission CreatePermission()
{
return IsAuthorised(Right) ? Allowed : NotAllowed;
}
private static bool IsAuthorised(string right)
{
if (right == Rights.None)
return true;
else {
return false;
}
}
}
class Program {
[IsAuthorized(SecurityAction.Demand, Right = IsAuthorized.Rights.CreateUserGroup)]
public static string Ping()
{
return "The service is online";
}
private static void Main(string[] args)
{
Ping();
}
}
}
Hope this helps,
Fredrik