Cant pull data through directly to the view MVC Claims Identity

Viewed 21

Hi I'm having trouble passing through Claims identity values directly into the view. I have a create a Security.cs file and i would like access through values inside the View. For Example, i expect to return @CurrentUser.DisplayName but unfortunately @CurrentUser does not exist is the current context. This has baffled me to be honest, Any ideas please?

Also as an edit: I can pull values through to my controller no problem.

Below is my Security Controller:

 [HttpPost]
    public ActionResult CheckUser(string returnURL)
    {
        ViewBag.ReturnURL = returnURL;
        GRATT.BLL.GratManager gm = new GRATT.BLL.GratManager();

    string username = Request.Form["username"];
    string password = Request.Form["password"];

    GRATT.DTO.AppUser au = gm.GetUser(username, password);

    if (au != null)
    {
        if (Membership.ValidateUser(Request.Form["username"], Request.Form["password"]))
        {
            ClaimsIdentity identity = new ClaimsIdentity(new[]
        {
            new Claim("Username", au.Username.ToString()),
            new Claim("UserId", au.UserId.ToString()),
            new Claim("DisplayName", (au.Name.Forename ?? "") +" "+ (au.Name.Surname ?? "")),
            new Claim("SiteCode", au.Site.ToLower().ToString())
        }, "GratAuditTool_Authentication");


            foreach (GRATT.DTO.UserRole r in au.Roles)
            {
                identity.AddClaim(new Claim("Role", r.Role.Name));
            }


            var ctx = Request.GetOwinContext();
            var authManager = ctx.Authentication;


            authManager.SignIn(identity);
            return RedirectToAction("Index", "Home");
        }


    }
    return RedirectToAction("Login", "Security");
}

And below is my Security.cs file:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Security.Claims;
using System.Web.Mvc;

namespace GrattAuditTool.UI
{
    public class GratAuditToolClaimsPrincipal : ClaimsPrincipal
    {
        public GratAuditToolClaimsPrincipal(ClaimsPrincipal p) : base(p)
        {

    }
    public string DisplayName
    {
        get
        {
            return FindFirst("DisplayName").Value;
        }
    }
    public string UserID
    {
        get
        {
            return FindFirst("UserID").Value;
        }
    }
    public string Initials
    {
        get
        {
            return FindFirst("Initials").Value;
        }
    }
    public Boolean IsAdmin
    {
        get
        {
            return Convert.ToBoolean(FindFirst("Admin").Value);
        }
    }

    public string SiteCode
    {
        get
        {
            return FindFirst("SiteCode").Value;
        }
    }
    public List<string> Roles
    {
        get
        {
            List<string> roles = new List<string>();
            foreach (string s in FindAll("Role").Select(x => x.Value))
            {
                roles.Add(s);
            }
            return roles;
        }
    }

}
public abstract class GratAuditToolController : Controller
{
    public GratAuditToolClaimsPrincipal CurrentUser
    {
        get
        {
            return new GratAuditToolClaimsPrincipal(User as ClaimsPrincipal);
        }
    }
}
public abstract class GratAuditToolViewPage<TModel> : WebViewPage<TModel>
{
    public GratAuditToolClaimsPrincipal CurrentUser
    {
        get
        {
            return new GratAuditToolClaimsPrincipal(User as ClaimsPrincipal);
        }
    }
}
public abstract class GratAuditToolViewPage : GratAuditToolViewPage<dynamic>
{

}

}

0 Answers
Related