Example #1
0
 public CustomPrincipal(IIdentity identity, LoginCredentials credentials)
 {
     _identity       = identity;
     _credentials    = credentials;
     WarningMessages = new List <string>();
 }
Example #2
0
        public SessionInfo Login(string userName, string password, string appName)
        {
            if (string.IsNullOrEmpty(userName))
            {
                throw new ArgumentException(SR.UserIDIsEmpty);
            }

            if (string.IsNullOrEmpty(password))
            {
                throw new ArgumentException(SR.PasswordIsEmpty);
            }

            Platform.CheckForEmptyString(password, "password");
            Platform.CheckForEmptyString(appName, "appName");

            SessionInfo session = null;

            Platform.GetService(
                delegate(IAuthenticationService service)
            {
                try
                {
                    var request = new InitiateSessionRequest(userName, appName,
                                                             Dns.GetHostName(), password)
                    {
                        GetAuthorizations = true
                    };

                    InitiateSessionResponse response = service.InitiateSession(request);
                    if (response != null)
                    {
                        var credentials = new LoginCredentials
                        {
                            UserName     = userName,
                            DisplayName  = response.DisplayName,
                            SessionToken = response.SessionToken,
                            Authorities  = response.AuthorityTokens,
                            DataAccessAuthorityGroups = response.DataGroupOids,
                            EmailAddress = response.EmailAddress
                        };
                        var user = new CustomPrincipal(new CustomIdentity(userName, response.DisplayName), credentials);
                        Thread.CurrentPrincipal = user;

                        session = new SessionInfo(user);
                        session.User.WarningMessages = response.WarningMessages;

                        // Note: need to insert into the cache before calling SessionInfo.Validate()
                        SessionCache.Instance.AddSession(response.SessionToken.Id, session);
                        session.Validate();

                        Platform.Log(LogLevel.Info, "{0} has successfully logged in.", userName);
                    }
                }
                catch (FaultException <PasswordExpiredException> ex)
                {
                    throw ex.Detail;
                }
                catch (FaultException <UserAccessDeniedException> ex)
                {
                    throw ex.Detail;
                }
                catch (FaultException <RequestValidationException> ex)
                {
                    throw ex.Detail;
                }
            }
                );

            return(session);
        }