public User GetByNameIdentifier(UserApplication userApp) { Contract.Requires <ArgumentNullException>(null != userApp); Contract.Requires <ArgumentNullException>(null != userApp.Application); Contract.Requires <ArgumentNullException>(null != userApp.User); Contract.Requires <ArgumentOutOfRangeException>(Guid.Empty != userApp.Application.Identifier); Contract.Requires <ArgumentOutOfRangeException>(!string.IsNullOrWhiteSpace(userApp.User.NameIdentifier)); var source = new DomainSource(); var userData = source.GetUserByNameIdentifier(userApp.Application.Identifier, userApp.User.NameIdentifier); return(userData == null ? (User)null : userData.Convert()); }
public ActionResult Profile(FormCollection collection) { using (new Service.PerformanceMonitor()) { try { var preference = new UserPreference() { Application = Application.Current, User = User.Identity.Data(), }; var timeZoneId = collection["TimeZone.Id"]; preference = userCore.Get(preference); preference.TimeZone = TimeZoneInfo.FindSystemTimeZoneById(timeZoneId); preference.TwitterHandle = collection["TwitterHandle"]; preference.GitHubHandle = collection["GitHubHandle"]; preference.AbcHandle = collection["AbcHandle"]; preference.Country = collection["Country"]; preference.City = collection["City"]; userCore.Save(preference); var source = new DomainSource(); var user = source.GetUserByNameIdentifier(Application.Current.Identifier, User.Identity.NameIdentifier()); user.Email = collection["Email"]; user.UserName = collection["UserName"]; user.LastActivityOn = DateTime.UtcNow; source.Update(user); } catch (Exception ex) { log.Log(ex, EventTypes.Warning, (int)Fault.Unknown); } return(this.Profile()); } }
public void GetUserByNameIdentifier() { var source = new DomainSource(); var user = User(); user.NameIdentifier = StringHelper.ValidString(); source.Insert(user); var saved = source.GetUserByNameIdentifier(user.ApplicationId, user.NameIdentifier); Assert.IsNotNull(saved); Assert.AreEqual <DateTime>(saved.CreatedOn, user.CreatedOn); Assert.AreEqual <DateTime>(saved.LastLoggedInOn, user.LastLoggedInOn); Assert.AreEqual <DateTime>(saved.LastActivityOn, user.LastActivityOn); Assert.AreEqual <DateTime>(saved.PasswordLastChangedOn, user.PasswordLastChangedOn); Assert.AreEqual <string>(saved.Email, user.Email); Assert.AreEqual <string>(saved.OpenId, user.OpenId); Assert.AreEqual <string>(saved.UserName, user.UserName); Assert.AreEqual <int>(saved.RoleValue, user.RoleValue); Assert.AreEqual <bool>(saved.IsApproved, user.IsApproved); Assert.AreEqual <bool>(saved.IsLockedOut, user.IsLockedOut); Assert.AreEqual <DateTime>(saved.LastLockedOutOn, user.LastLockedOutOn); }
/// <summary> /// Register user on site /// </summary> /// <param name="userIdentity">user Identity</param> /// <returns>New User</returns> private bool Register(IIdentity userIdentity) { using (new Service.PerformanceMonitor()) { if (userIdentity.IsAuthenticated) { var identity = (IClaimsIdentity)userIdentity; var register = new RegisterModel() { Email = User.Identity.EmailAddress(), NameIdentifier = User.Identity.NameIdentifier(), UserName = identity.Name, }; var source = new DomainSource(); UserData user = null; if (!string.IsNullOrWhiteSpace(register.NameIdentifier) && null != (user = source.GetUserByNameIdentifier(ServerConfiguration.ApplicationIdentifier, register.NameIdentifier))) { user.LastLoggedInOn = DateTime.UtcNow; user.LastActivityOn = DateTime.UtcNow; source.Update(user); } else if (!string.IsNullOrWhiteSpace(register.Email) && null != (user = source.GetUserByEmail(ServerConfiguration.ApplicationIdentifier, register.Email))) { user.LastLoggedInOn = DateTime.UtcNow; user.LastActivityOn = DateTime.UtcNow; user.NameIdentifier = register.NameIdentifier; source.Update(user); } else { var provider = new TableMembershipProvider(); MembershipCreateStatus status; provider.CreateUser(register.UserName, Guid.NewGuid().ToString(), register.Email, null, null, true, register.NameIdentifier, out status); if (status == MembershipCreateStatus.Success) { log.Log("New user signed up."); return(true); } else { log.Log("New user failed to signed up; status: '{0}'".FormatWithCulture(status)); } } } } return(false); }
public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool approved, object providerUserKey, out MembershipCreateStatus status) { using (new PerformanceMonitor()) { MembershipUser membership = null; status = MembershipCreateStatus.UserRejected; UserData userValidation = null; if (!string.IsNullOrWhiteSpace(email)) { userValidation = source.GetUserByEmail(Application.Default.Identifier, email); if (null != userValidation) { status = MembershipCreateStatus.DuplicateEmail; } } if (!string.IsNullOrWhiteSpace(username)) { userValidation = source.GetUserByEmail(Application.Default.Identifier, username); if (null != userValidation) { status = MembershipCreateStatus.DuplicateUserName; } } if (null == userValidation) { userValidation = source.GetUserByNameIdentifier(Application.Default.Identifier, providerUserKey.ToString()); if (null != userValidation) { status = MembershipCreateStatus.DuplicateProviderUserKey; } else { var user = new UserData(email, providerUserKey.ToString(), username) { RoleValue = (int)TableMembershipProvider.DetermineRoleType(email), }; source.Insert(user); var returnedUser = source.GetUserById(Application.Default.Identifier, user.Id); if (null == returnedUser) { status = MembershipCreateStatus.ProviderError; } else if (!returnedUser.IsApproved) { status = MembershipCreateStatus.UserRejected; } else if (returnedUser.IsLockedOut) { status = MembershipCreateStatus.UserRejected; } else { status = MembershipCreateStatus.Success; membership = new MembershipUser(ProviderName, returnedUser.UserName, returnedUser.NameIdentifier, returnedUser.Email, passwordQuestion, string.Empty, returnedUser.IsApproved, returnedUser.IsLockedOut, returnedUser.CreatedOn, returnedUser.LastLoggedInOn, returnedUser.LastActivityOn, returnedUser.PasswordLastChangedOn, returnedUser.LastLockedOutOn); logger.Log("New user signed up."); } } } return(membership); } }
/// <summary> /// GitHub Auth API /// </summary> /// <remarks> /// GET: /Auth/GitHub /// </remarks> /// <returns></returns> public ActionResult GitHub() { var code = Request.Params["code"]; if (!string.IsNullOrWhiteSpace(code)) { try { string responseData = null; using (var client = new WebClient()) { var nameValuePairs = new NameValueCollection(); nameValuePairs.Add("code", code); nameValuePairs.Add("client_secret", ServerConfiguration.GitHubSecret); nameValuePairs.Add("client_id", ServerConfiguration.GitHubClientId); client.Headers.Add("content-type", "application/x-www-form-urlencoded"); var response = client.UploadValues(GitHubAuthorizationPost, nameValuePairs); responseData = client.Encoding.GetString(response); } if (!string.IsNullOrWhiteSpace(responseData)) { var gitHubResponse = GitHubResponse.Parse(responseData); string profileJson = null; using (var client = new WebClient()) { profileJson = client.DownloadString(string.Format(GitHubApi, "user", gitHubResponse.AccessToken)); } if (!string.IsNullOrWhiteSpace(profileJson)) { var serializer = new JavaScriptSerializer(); var profile = serializer.Deserialize <GitHubProfile>(profileJson); if (this.Login(profile)) //New User { var source = new DomainSource(); var user = source.GetUserByNameIdentifier(Application.Default.Identifier, string.Format("github{0}", profile.Id)); var preference = profile.Convert(); preference.Application = Application.Default; preference.User = user.Convert(); var core = new UserCore(); core.Save(preference); var profilePage = ((IConvert <ProfilePage>)profile).Convert(); profilePage.ApplicationIdentifier = Application.Default.Identifier; profilePage.OwnerIdentifier = user.Id; profilePage.GitCode = code; profilePage.GitAccessToken = gitHubResponse.AccessToken; core.Save(profilePage); return(this.RedirectToAction("Welcome", "Home")); } else { return(this.RedirectToAction("Index", "Profile", new { username = profile.Login })); } } } } catch (Exception ex) { log.Log(ex, Abc.Services.Contracts.EventTypes.Critical, (int)ServiceFault.Unknown); } } return(this.RedirectToAction("Index", "Auth")); }
private bool Login(GitHubProfile profile) { var newUser = false; var register = new RegisterModel() { Email = profile.Email, NameIdentifier = string.Format("github{0}", profile.Id), UserName = profile.Name, }; var source = new DomainSource(); UserData user = null; if (!string.IsNullOrWhiteSpace(register.NameIdentifier) && null != (user = source.GetUserByNameIdentifier(Application.Default.Identifier, register.NameIdentifier))) { user.LastLoggedInOn = DateTime.UtcNow; user.LastActivityOn = DateTime.UtcNow; source.Update(user); } else if (!string.IsNullOrWhiteSpace(register.Email) && null != (user = source.GetUserByEmail(Application.Default.Identifier, register.Email))) { user.LastLoggedInOn = DateTime.UtcNow; user.LastActivityOn = DateTime.UtcNow; user.NameIdentifier = register.NameIdentifier; source.Update(user); } else { var provider = new TableMembershipProvider(); MembershipCreateStatus status; provider.CreateUser(register.UserName, Guid.NewGuid().ToString(), register.Email, null, null, true, register.NameIdentifier, out status); if (status == MembershipCreateStatus.Success) { log.Log("New user signed up."); newUser = true; } else { log.Log(string.Format("New user failed to signed up; status: '{0}'", status)); } } FormsAuthentication.SetAuthCookie(register.Email, true); return(newUser); }
public void GetUserByOpenIdInvalidApplicationId() { var source = new DomainSource(); source.GetUserByNameIdentifier(Guid.Empty, StringHelper.ValidString()); }
public void GetUserByOpenIdInvalidOpenId() { var source = new DomainSource(); source.GetUserByNameIdentifier(Guid.NewGuid(), StringHelper.NullEmptyWhiteSpace()); }