public AccountBasicData GetAccountBasicData(Account account) { Assert.IsNotNull(account, "Account parameter is null"); Person accountData = this.GetAccountData(account); string id = null; string str2 = null; string displayName = null; if (accountData != null) { id = accountData.Metadata.Sources.FirstOrDefault().Id; displayName = accountData.Names.FirstOrDefault().DisplayName; str2 = (from emailData in accountData.EmailAddresses where string.Compare(emailData.Type, "account", StringComparison.InvariantCultureIgnoreCase) == 0 select emailData.Value).FirstOrDefault <string>(); } AccountBasicData data1 = new AccountBasicData(); data1.Account = account; data1.Id = id; data1.Email = str2; data1.FullName = displayName; return(data1); }
public async Task <IActionResult> Join([FromBody] RequestUserJoinModel model) { // check format if (model.Username.IsValidUsername() == false) { return(Responsed(ErrorCode.InvalidUserName)); } if (model.EMail.IsValidEmailAddress() == false) { return(Responsed(ErrorCode.InvalidEMail)); } // check account AccountBasicData basicData = new AccountBasicData(); if (await basicData.FromDBByUserNameAsync(model.Username)) { return(Responsed(ErrorCode.ExistUserName)); } if (await basicData.FromDBByEmailAsync(model.EMail)) { return(Responsed(ErrorCode.ExistEMail)); } // check verify code ErrorCode emailVerifyResult = CheckEMailVerifyCode(model.EMail, model.VerifyCode, false); if (emailVerifyResult != ErrorCode.Success) { return(Responsed(emailVerifyResult)); } // insert database DBQuery_Account_Insert query = new DBQuery_Account_Insert(); basicData = query.IN.BasicData; basicData.AccountDBKey = DBKeyGenerator.NewAccountDBKey; basicData.EMail = model.EMail; basicData.CreateTime = DateTime.UtcNow; basicData.Username = model.Username; basicData.Password = PasswordUtility.HashPassword(model.Password); if (await DBThread.Instance.ReqQueryAsync(query) == false) { return(Responsed(ErrorCode.DatabaseError)); } // response ResponseUserJoinModel responseData = new ResponseUserJoinModel(); responseData.EMail = model.EMail; responseData.CreateTime = basicData.CreateTime; responseData.Username = model.Username; return(Success(responseData)); }
// 로그인 처리 private async Task <ErrorCode> ProcessLoginAsync(string emailOrUserName, string password, int timeZoneOffsetFromUTC) { if (User.Identity.IsAuthenticated) { return(ErrorCode.AlreadyLoggedin); } if (emailOrUserName.Length < 2) { return(ErrorCode.InvalidUserName); } bool isEMail = emailOrUserName.Contains('@'); AccountBasicData basicData = new AccountBasicData(); if (isEMail) { if (await basicData.FromDBByEmailAsync(emailOrUserName) == false) { return(ErrorCode.InvalidEMail); } } else { if (await basicData.FromDBByUserNameAsync(emailOrUserName) == false) { return(ErrorCode.InvalidUserName); } } if (PasswordUtility.VerifyPassword(password, basicData.Password) == false) { return(ErrorCode.InvalidPassword); } var claims = new List <Claim>(); claims.Add(new Claim(ClaimTypes.SerialNumber, basicData.AccountDBKey.ToString())); claims.Add(new Claim(ClaimTypes.GivenName, basicData.GivenName)); claims.Add(new Claim(ClaimTypes.Surname, basicData.SurName)); claims.Add(new Claim(ClaimTypes.Name, basicData.Username)); claims.Add(new Claim(ClaimTypes.Email, basicData.EMail)); claims.Add(new Claim("TimeZoneOffset", TimeSpan.FromMinutes(timeZoneOffsetFromUTC).ToString())); var userIdentity = new ClaimsIdentity(claims, "login"); ClaimsPrincipal principal = new ClaimsPrincipal(userIdentity); await HttpContext.SignInAsync(principal); return(ErrorCode.Success); }
public bool FromDataTable(DataTable table) { try { foreach (DataRow row in table.Rows) { var item = new AccountBasicData(); item.FromDBTable(row); Items.Add(item); } return(true); } catch { return(false); } }
public async Task <IActionResult> JoinVerifyUsername([FromBody] RequestUserJoinVerifyUsernameModel model) { // check format if (model.Username.IsValidUsername() == false) { return(Responsed(ErrorCode.InvalidUserName)); } // check account AccountBasicData basicData = new AccountBasicData(); if (await basicData.FromDBByUserNameAsync(model.Username)) { return(Responsed(ErrorCode.ExistUserName)); } return(Success()); }
public async Task <IActionResult> JoinVerifyEMail([FromBody] RequestUserJoinVerifyEMailModel model) { // check format if (model.EMail.IsValidEmailAddress() == false) { return(Responsed(ErrorCode.InvalidEMail)); } // check account AccountBasicData basicData = new AccountBasicData(); if (await basicData.FromDBByEmailAsync(model.EMail)) { return(Responsed(ErrorCode.ExistEMail)); } return(Success()); }
public async Task <IActionResult> ResetPassword([FromBody] RequestUserResetPasswordModel model) { // check account AccountBasicData basicData = new AccountBasicData(); if (await basicData.FromDBByEmailAsync(model.EMail) == false) { return(Responsed(ErrorCode.InvalidEMail)); } string newPassword = DBKeyGenerator.NewVerifyCode; basicData.Password = PasswordUtility.HashPassword(newPassword); var query = new DBQuery_Account_Update_Password(); query.IN.AccountDBKey = basicData.AccountDBKey; query.IN.Password = basicData.Password; if (await DBThread.Instance.ReqQueryAsync(query) == false) { return(Responsed(ErrorCode.DatabaseError)); } // 이메일 발송 StringBuilder msg = new StringBuilder(1024); msg.AppendLine(string.Format($"Hello. {basicData.Username}")); msg.AppendLine(string.Format($"Reseted your password.")); msg.AppendLine(); msg.AppendLine(string.Format($"Your temp password : {newPassword}")); await WebServiceUtility.SendEMailAsync("[Hena Platform] Reseted your password.", msg.ToString(), false, model.EMail); return(Success()); }
public async Task <IActionResult> SendVerifyEMail([FromBody] RequestUserSendVerifyEMailModel model) { // check account AccountBasicData basicData = new AccountBasicData(); if (await basicData.FromDBByUserNameAsync(model.Username)) { return(Responsed(ErrorCode.ExistUserName)); } if (await basicData.FromDBByEmailAsync(model.EMail)) { return(Responsed(ErrorCode.ExistEMail)); } // generate verify data var verifyData = VerifyDataManager.Instance.NewVerifyData(TimeSpan.FromMinutes(3) , TimeSpan.FromHours(1), true, model); // 이메일 발송 StringBuilder msg = new StringBuilder(1024); msg.AppendLine(string.Format($"Hello. {model.Username}")); msg.AppendLine(string.Format($"Please enter your verification code below and complete verification.")); msg.AppendLine(); msg.AppendLine(string.Format($"CODE : {verifyData.VerifyCode}")); await WebServiceUtility.SendEMailAsync("[Hena Platform] Signup verification code.", msg.ToString(), false, model.EMail); // 메일 발송 ResponseUserSendVerifyEMailModel responseData = new ResponseUserSendVerifyEMailModel(); responseData.EMail = model.EMail; responseData.Username = model.Username; return(Success(responseData)); }