Skip to content

Instantly share code, notes, and snippets.

@lazarofl
Last active December 15, 2015 13:19
Show Gist options
  • Save lazarofl/5266838 to your computer and use it in GitHub Desktop.
Save lazarofl/5266838 to your computer and use it in GitHub Desktop.
Authorize MVC
public class MyCondominiumAuthorizeAttribute : AuthorizeAttribute
{
private IBCondominium _BCondominium;
public override void OnAuthorization(AuthorizationContext filterContext)
{
_BCondominium = DependencyResolver.Current.GetService<IBCondominium>();
CustomIdentity identity = filterContext.HttpContext.User.Identity as CustomIdentity;
if (identity == null || !identity.IsAuthenticated)
filterContext.Result = new HttpUnauthorizedResult();
else if (identity.IsAuthenticated)
{
string socialnetworkname = filterContext.HttpContext.Request.Url.AbsolutePath.Split('/')[1];
var socialnetwork = _BCondominium.GetByCondition(x => x.SocialNetworkName == socialnetworkname);
if (socialnetwork.Members.Count(x => x.User.Id.Equals(identity.Id) && x.IsActive) == 0)
filterContext.Result = new HttpUnauthorizedResult();
var member = socialnetwork.Members.Where(x => x.User.Id == identity.Id && x.IsActive).FirstOrDefault();
string[] roles = new[] { "" };
if (member != null)
roles = (member.MemberType.Name == "Admin") ? new[] { "User", "Admin" } : new[] { "User" };
CustomPrincipal p = new CustomPrincipal(identity, roles);
filterContext.HttpContext.User = p;
Thread.CurrentPrincipal = p;
}
base.OnAuthorization(filterContext);
if (filterContext.Result is HttpUnauthorizedResult)
{
var rawurl = filterContext.RequestContext.HttpContext.Request.RawUrl;
var s = filterContext.RequestContext.HttpContext.Request["s"]; // parameter used by SolicitarConvite
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { Action = "Entrar", Controller = "Home", s = s, r = rawurl }));
return;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment