public IPrincipal Create(IDictionary <string, AuthClaimsVm> agents, string token) { if (!agents.ContainsKey(token)) { return(null); } var authVm = agents[token]; var agentProfileClaims = agentConnectPrincipalService.GetAgentProfileClaims(authVm.MgiDeviceAgentId, authVm.MgiDevicePosNumber, authVm.AgentPassword, authVm.Language, token); var claims = new List <Claim>() .TryAddClaim(ClaimsNames.AgentPassword, authVm.AgentPassword) .TryAddClaim(ClaimsNames.AgentName, authVm.AgentName) .TryAddClaim(ClaimsNames.StoreName, authVm.AgentName) .TryAddClaim(ClaimsNames.AgentTimeZone, authVm.AgentTimeZone) .TryAddClaim(ClaimsNames.AgentTelNo, authVm.AgentTelNo) .TryAddClaim(ClaimsNames.PrimaryReceiptLanguage, authVm.PrimaryReceiptLanguage) .TryAddClaim(ClaimsNames.SecondaryReceiptLanguage, authVm.SecondaryReceiptLanguage) .TryAddClaim(ClaimsNames.Token, authVm.Token) .TryAddClaim(ClaimsNames.Sub, authVm.Sub) .TryAddClaim(ClaimsNames.MgiAgentLocationId, authVm.MgiAgentLocationId) .TryAddClaim(ClaimsNames.MgiUserLastLoginTs, authVm.MgiUserLastLoginTS) .TryAddClaim(ClaimsNames.GivenName, authVm.Given_Name) .TryAddClaim(ClaimsNames.MgiDevicePosNumber, authVm.MgiDevicePosNumber) .TryAddClaim(ClaimsNames.MgiDeviceAgentLocationId, authVm.MgiDeviceAgentId) .TryAddClaim(ClaimsNames.UpdatedAt, authVm.Updated_At) .TryAddClaim(ClaimsNames.MgiMainOfficeId, authVm.MgiMainOfficeId) .TryAddClaim(ClaimsNames.Email, authVm.Email) .TryAddClaim(ClaimsNames.Name, authVm.Name) .TryAddClaim(ClaimsNames.FamilyName, authVm.Family_Name) .TryAddClaim(ClaimsNames.Language, authVm.Language) .TryAddClaim(ClaimsNames.MgiDevicePosUnitProfileId, authVm.MgiPosUnitProfileId) .TryAddClaim(ClaimsNames.DSL, authVm.DSL) .TryAddClaim(ClaimsNames.HostVersionEOLDate, authVm.HostVersionEOLDate) .TryAddClaim(ClaimsNames.PlatformVersionEOLDate, authVm.PlatformVersionEOLDate) .TryAddClaim(ClaimsNames.MgiAppAwMaxSendAmount, authVm.MgiAppAwMaxSendAmount) .TryAddClaim(ClaimsNames.MgiAppAwMaxSendCancellationAmount, authVm.MgiAppAwMaxSendCancellationAmount) .TryAddClaim(ClaimsNames.MgiAppAwMaxReceiveCancellationAmount, authVm.MgiAppAwMaxReceiveCancellationAmount) .TryAddClaim(ClaimsNames.MgiAppAwMaxAmendAmount, authVm.MgiAppAwMaxAmendAmount) .TryAddClaim(ClaimsNames.MgiAppAwMaxReceiveAmount, authVm.MgiAppAwMaxReceiveAmount) .TryAddClaim(ClaimsNames.MgiAppAwMaxBillPayAmount, authVm.MgiAppAwMaxBillPayAmount) .TryAddClaim(ClaimsNames.MgiAppAwMaxMoneyOrderAmount, authVm.MgiAppAwMaxMoneyOrderAmount) .TryAddClaim(ClaimsNames.MgiAppAwMaxVendorPaymentAmount, authVm.MgiAppAwMaxVendorPaymentAmount); claims.AddRange(agentProfileClaims); var claimsIdentity = new ClaimsIdentity(claims, AuthConstants.FakeAuth); var principal = new GenericPrincipal(claimsIdentity, authVm.MgiAppAwRoles.ToArray()); return(principal); }
private List <Claim> GetAgentProfileClaims(string sessionId, List <Claim> userInfoClaims) { var claims = new List <Claim>(); var agentId = userInfoClaims.FirstOrDefault(x => x.Type == ClaimsNames.MgiAgentLocationId)?.Value; var posNumber = userInfoClaims.FirstOrDefault(x => x.Type == ClaimsNames.MgiDevicePosNumber)?.Value; var language = userInfoClaims.FirstOrDefault(x => x.Type == ClaimsNames.Language)?.Value; // If OpenAM provided an AgentID and POS Number, retrieve the profile from AgentConnect if (!string.IsNullOrEmpty(agentId) && !string.IsNullOrEmpty(posNumber)) { var agentPassword = agentPasswordPrincipalService.GetAgentPassword(sessionId, agentId, posNumber); var agentProfileClaims = agentProfilePrincipalService.GetAgentProfileClaims(agentId, posNumber, agentPassword, language, sessionId); claims.Add(new Claim(ClaimsNames.AgentPassword, agentPassword)); claims.AddRange(agentProfileClaims); } return(claims); }