示例#1
0
        public override Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
        {
            var identity = new ClaimsIdentity(context.Options.AuthenticationType);

            var validUser = _user.IsUserValid(context.UserName, context.Password);

            BLO.LoginAudit loginAudit = new BLO.LoginAudit();
            //loginAudit.IPAddress =GetClientIP();
            loginAudit.UserName    = context.UserName;
            loginAudit.LoginDate   = DateTime.Now;
            loginAudit.LoginStatus = "Failed";

            if (validUser.IsTransactionDone)
            {
                if (validUser.IsValidUser)
                {
                    string[] roles = _user.GetUserRoles(context.UserName);

                    foreach (string role in roles)
                    {
                        identity.AddClaim(new Claim(ClaimTypes.Role, role));
                    }

                    identity.AddClaim(new Claim(ClaimTypes.Name, context.UserName));

                    //if (roles[0] != "SuperAdmin")
                    //{
                    //    var userDetails = _user.FetchUserInformation(context.UserName);
                    //    identity.AddClaim(new Claim(ClaimTypes.Name, userDetails.UserID));
                    //    identity.AddClaim(new Claim("userName", userDetails.UserName));
                    //    identity.AddClaim(new Claim("userID", userDetails.UserID));
                    //    identity.AddClaim(new Claim("agentCode", userDetails.AgentCode));
                    //    identity.AddClaim(new Claim("agentBranch", userDetails.AgentBranch));
                    //    identity.AddClaim(new Claim("agency", userDetails.Agency));
                    //    identity.AddClaim(new Claim("products", userDetails.Products));
                    //}
                    //else
                    //{
                    //    identity.AddClaim(new Claim(ClaimTypes.Name, "SuperAdmin"));
                    //}
                    var userDetails = _user.FetchUserInformation(context.UserName);
                    identity.AddClaim(new Claim(ClaimTypes.Name, userDetails.UserID));
                    identity.AddClaim(new Claim("userName", userDetails.UserName));
                    identity.AddClaim(new Claim("userID", userDetails.UserID));
                    identity.AddClaim(new Claim("agentCode", userDetails.AgentCode));
                    identity.AddClaim(new Claim("agentBranch", userDetails.AgentBranch));
                    identity.AddClaim(new Claim("agency", userDetails.Agency));
                    identity.AddClaim(new Claim("products", userDetails.Products));
                    identity.AddClaim(new Claim("id", userDetails.ID.ToString()));
                    identity.AddClaim(new Claim("isShowPayments", userDetails.IsShowPayments.ToString()));
                    //identity.AddClaim(new Claim("agentLogo", Convert.ToBase64String(userDetails.AgentLogo)));

                    context.Validated(identity);
                    loginAudit.LoginStatus = "Success";
                    //new Task(() => { TrackLoginAudit(loginAudit); }).Start();
                }
                else
                {
                    context.SetError("invalid_grant", "Provided username and password is incorrect");
                    //new Task(() => { TrackLoginAudit(loginAudit); }).Start();
                    return(base.GrantResourceOwnerCredentials(context));
                }
            }
            else
            {
                context.SetError("Transaction_error", "Transaction failed. Please try again");
                //new Task(() => { TrackLoginAudit(loginAudit); }).Start();
                return(base.GrantResourceOwnerCredentials(context));
            }

            return(base.GrantResourceOwnerCredentials(context));
        }
示例#2
0
 private void TrackLoginAudit(BLO.LoginAudit audit)
 {
     _user.TrackLogin(audit);
 }