コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }