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); }