public object Authenticate(IObjectSpace objectSpace)
        {
            IAuthenticationOAuthUser user = null;
            AuthenticateResult       authenticateResult = Authenticate().Result;

            if (authenticateResult != null)
            {
                Claim emailClaim = authenticateResult.Identity.FindFirst(ClaimTypes.Email);
                if (emailClaim != null)
                {
                    user = (IAuthenticationOAuthUser)objectSpace.FindObject(userType, CriteriaOperator.Parse(string.Format("OAuthAuthenticationEmails[Email = '{0}']", emailClaim.Value)));
                    if (user == null && CreateUserAutomatically)
                    {
                        user          = (IAuthenticationOAuthUser)objectSpace.CreateObject(userType);
                        user.UserName = emailClaim.Value;
                        EmailEntity email = objectSpace.CreateObject <EmailEntity>();
                        email.Email = emailClaim.Value;
                        user.OAuthAuthenticationEmails.Add(email);
                        ((CustomSecurityStrategyComplex)security).InitializeNewUser(objectSpace, user);
                        objectSpace.CommitChanges();
                    }
                }
            }
            else
            {
                WebApplication.Redirect(WebApplication.LogonPage);
            }
            if (user == null)
            {
                throw new Exception("Login failed");
            }
            return(user);
        }
예제 #2
0
        public override object Authenticate(IObjectSpace objectSpace)
        {
            IAuthenticationOAuthUser user = base.Authenticate(objectSpace) as IAuthenticationOAuthUser;

            if (user != null && !user.EnableStandardAuthentication)
            {
                throw new InvalidOperationException("Password authentication is not allowed for this user.");
            }
            return(user);
        }
예제 #3
0
        public override object Authenticate(IObjectSpace objectSpace)
        {
            IAuthenticationOAuthUser user = null;

            if (AuthenticationOwin.Module.Web.Controllers.LogonAuthController.IsOAuthRequest)
            {
                AuthenticateResult authenticateResult = Authenticate().Result;
                if (authenticateResult != null)
                {
                    Claim emailClaim = authenticateResult.Identity.FindFirst(ClaimTypes.Email);
                    if (emailClaim != null)
                    {
                        user = (IAuthenticationOAuthUser)objectSpace.FindObject(UserType, CriteriaOperator.Parse(string.Format("OAuthAuthenticationEmails[Email = '{0}']", emailClaim.Value)));
                        if (user == null && CreateUserAutomatically)
                        {
                            user          = (IAuthenticationOAuthUser)objectSpace.CreateObject(UserType);
                            user.UserName = emailClaim.Value;
                            EmailEntity email = objectSpace.CreateObject <EmailEntity>();
                            email.Email = emailClaim.Value;
                            user.OAuthAuthenticationEmails.Add(email);
                            ((CustomSecurityStrategyComplex)Security).InitializeNewUser(objectSpace, user);
                            objectSpace.CommitChanges();
                        }
                    }
                }
                else
                {
                    //TODO
                    WebApplication.Redirect(WebApplication.LogonPage);
                }
                if (user == null)
                {
                    throw new Exception("Login failed");
                }
                return(user);
            }
            else
            {
                user = base.Authenticate(objectSpace) as IAuthenticationOAuthUser;
                if (user != null && !user.EnableStandardAuthentication)
                {
                    throw new InvalidOperationException("Password authentication is not allowed for this user.");
                }
                return(user);
            }
        }