Esempio n. 1
0
        private IUser ensureUserExistsInDb(SessionData sessionData)
        {
            if (sessionData == null)
            {
                return(null);
            }
            var user = _orchardServices.ContentManager.Query <UserPart, UserPartRecord>().Where(u => u.NormalizedUserName == sessionData.Profile.UserName).List().FirstOrDefault();

            if (user == null)
            {
                user                    = _orchardServices.ContentManager.New <UserPart>("User");
                user.UserName           = sessionData.Profile.UserName;
                user.NormalizedUserName = user.UserName.ToLowerInvariant();
                user.Email              = sessionData.Profile.Email;
                user.Record.Password    = sessionData.Profile.Password;

                user.Record.RegistrationStatus = UserStatus.Approved;
                user.Record.EmailStatus        = UserStatus.Approved;
                user.Record.RegistrationStatus = UserStatus.Approved;
                user.Record.EmailStatus        = UserStatus.Approved;

                _orchardServices.ContentManager.Create(user);
                //user.Record.HashAlgorithm = "SHA1";
                //SetPassword(user.Record, createUserParams.Password);
            }
            else
            {
                user.Record.Password = sessionData.Profile.Password;
                _orchardServices.ContentManager.Flush();
            }

            var baUser = new BAUser(user, sessionData.Token);

            return(baUser);
        }
        public IUser GetAuthenticatedUser()
        {
            if (_signedInUser != null || _isAuthenticated)
            {
                return(_signedInUser);
            }

            var httpContext = _httpContextAccessor.Current();

            if (httpContext == null || !httpContext.Request.IsAuthenticated || !(httpContext.User.Identity is FormsIdentity))
            {
                return(null);
            }


            var formsIdentity = (FormsIdentity)httpContext.User.Identity;
            var userData      = formsIdentity.Ticket.UserData;

            int userId;

            if (!int.TryParse(userData, out userId))
            {
                Logger.Fatal("User id not a parsable integer");
                return(null);
            }

            _isAuthenticated = true;
            _signedInUser    = _contentManager.Get(userId).As <IUser>();
            var userPart = (UserPart)_signedInUser;

            if (_signedInUser == null)
            {
                _signedInUser    = null;
                _isAuthenticated = false;
                return(null);
            }

            if (httpContext.Session["SessionData"] == null)
            {
                if (string.IsNullOrEmpty(userPart.Record.Password))
                {
                    _signedInUser    = null;
                    _isAuthenticated = false;
                    return(null);
                }
                try {
                    BodyArchitectAccessServiceClient client = new BodyArchitectAccessServiceClient("Full");
                    ClientInformation clientInfo            = new ClientInformation();
                    clientInfo.ApplicationLanguage = "pl";
                    clientInfo.ApplicationVersion  = "5.0.0.0";
                    clientInfo.ClientInstanceId    = Guid.NewGuid();
                    clientInfo.Platform            = PlatformType.Web;
                    clientInfo.PlatformVersion     = "temp";
                    clientInfo.Version             = "4.5.0.0";
                    var sessionData = client.Login(clientInfo, _signedInUser.UserName, userPart.Record.Password);
                    if (sessionData == null)
                    {
                        _signedInUser            = null;
                        _isAuthenticated         = false;
                        userPart.Record.Password = null;
                        return(null);
                    }
                    var profileInfo = client.GetProfileInformation(sessionData.Token, new GetProfileInformationCriteria());
                    httpContext.Session["ProfileInformation"] = profileInfo;
                    httpContext.Session["SessionData"]        = sessionData;
                }
                catch (Exception ex)
                {
                    _signedInUser            = null;
                    _isAuthenticated         = false;
                    userPart.Record.Password = null;
                    Logger.Fatal("Cannot login to the BodyArchitectService", ex);
                    return(null);
                }
            }

            //string tokenId = splitedUserData.Length > 1 ? splitedUserData[1] : Guid.NewGuid().ToString();
            var baUser = new BAUser(userPart, ((SessionData)httpContext.Session["SessionData"]).Token);

            return(baUser);
        }