public IHttpActionResult Register(RegisterModel model) { ResponseModel obj = new ResponseModel(); string errorMessage = string.Empty; HttpResponseMessage response = new HttpResponseMessage(); try { if (!ModelState.IsValid) { errorMessage = String.Join(",", ErrorHelper.GetErrorListFromModelState(ModelState)); return(BadRequest(errorMessage)); } bool isEmail = ValidateEmail(model.Email); if (isEmail == false) { return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Please give a valid email id."))); } var userDetailsByEmail = _userService.GetUserDetailsByEmail(model.Email); if (userDetailsByEmail == null) { } else { return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "This email is already taken."))); } bool isValid = ErrorHelper.IsValidPassword(model.Password); if (!isValid) { return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "The password must contain atleast one number and one upper case character."))); } var keyNew = PasswordAndTrevoHelper.GeneratePassword(30); var password = PasswordAndTrevoHelper.EncodePassword(model.Password, keyNew); //string salt = Crypto.GenerateSalt(); //string hashedPassword = Crypto.HashPassword(salt + model.Password); //string salt = PasswordAndTrevoHelper.GetSaltString(); //string finalPassword = model.Password + salt; //string hashedPassword = PasswordAndTrevoHelper.GetPasswordHashAndSalt(finalPassword); //string hashedPassword = PasswordAndTrevoHelper.HashPassword(model.Password); var trevoId = PasswordAndTrevoHelper.GenerateTrevoId(model.Name); TrevoUsers user = new TrevoUsers(); user.Address = model.Address == null ? string.Empty : model.Address; user.Country_Id = model.CountryId; user.DeviceId = model.DeviceId; user.Dob = model.Dob; user.Email_Id = model.Email; user.Gender = model.Gender; //user.UsersLanguageId = model.Id; user.Interests = model.Interests == null ? string.Empty : model.Interests; user.LagLevel_ID = model.LanguageLevelId; user.Name = model.Name; user.Password = keyNew; user.PasswordHash = password; user.QR_Code = string.Empty; user.Self_Introduction = model.SelfIntroduction == null ? string.Empty : model.SelfIntroduction; user.TravelDestination_CId = model.TravelDestination == null ? string.Empty : model.TravelDestination; user.TrevoId = trevoId; user.IsVerified = 0; user.ImagePath = string.Empty; user.CreatedTime = DateTime.UtcNow; user.ExternalAuthType = model.ExternalAuthType == null ? string.Empty : model.ExternalAuthType; user.ExternalAuthUserId = model.ExternalAuthUserId == null ? string.Empty : model.ExternalAuthUserId; //_userService.InsertUserDetails(user); //insert the user language first var isSuccess = _userService.InsertUserDetails(user); if (isSuccess.IsSuccess) { UsersLanguage userLanguage = new UsersLanguage(); userLanguage.User_Id = Convert.ToInt64(isSuccess.Message); obj.UserID = userLanguage.User_Id; userLanguage.Learning_LanguageId = model.LearningLanguageId; userLanguage.Native_LanguageId = model.NativeLanguageId; _userLanguageService.InsertUserLanguageDetails(userLanguage); } else { return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "There is some error."))); } //send mail after successfull registration StreamReader reader = new StreamReader(System.Web.Hosting.HostingEnvironment.MapPath("~/Content/EmailTemplate/RegistrationActivation.html")); string readFile = reader.ReadToEnd(); string mailBody = ""; mailBody = readFile; mailBody = mailBody.Replace("$$UserName$$", model.Name); string otpCode = PasswordAndTrevoHelper.CreateRandomNumber(5); string encryptedUserName = SSTCryptographer.Encrypt(model.Name, SSTCryptographer.Key = "Activation"); mailBody = mailBody.Replace(" $$OTPCode$$", otpCode); ReturnMsg mailResult = SendMail.SendEmail(InfoMail, model.Email, "Account Activation", mailBody); obj.Email = model.Email; obj.Name = model.Name; var userLanDetails = _userLanguageService.GetLanguageListByUserId(obj.UserID); if (userLanDetails != null) { var langDetails = _langService.GetLanguageDetailsById(userLanDetails.Native_LanguageId); if (langDetails != null) { obj.NativeLangugae = langDetails.Abbreviation; } langDetails = _langService.GetLanguageDetailsById(userLanDetails.Learning_LanguageId); if (langDetails != null) { obj.LearningLanguage = langDetails.Abbreviation; } } obj.ImagePath = noImagePath; } catch (System.Exception e) { return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e.Message))); } return(Ok(obj)); }
public IHttpActionResult ChangePassword(ChangePasswordBindingModel model) { try { if (!ModelState.IsValid) { string errorMessage = string.Empty; errorMessage = string.Join(",", ErrorHelper.GetErrorListFromModelState(ModelState)); return(BadRequest(errorMessage)); } bool isValidEmail = ValidateEmail(model.Email); if (!isValidEmail) { return(BadRequest("Please give a valid email.")); } if (model.OldPassword.ToLower().Equals(model.NewPassword.ToLower())) { return(BadRequest("Old Password and New Password must not be same.")); } bool isNewPassValid = ErrorHelper.IsValidPassword(model.NewPassword); if (!isNewPassValid) { return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "The password must contain atleast one number and one upper case character."))); } var userDetails = _userService.GetUserDetailsByEmail(model.Email); if (userDetails != null) { string salt = userDetails.Password; string hashedPassword = string.Empty; hashedPassword = PasswordAndTrevoHelper.EncodePassword(model.OldPassword, salt); if (hashedPassword == userDetails.PasswordHash) { salt = PasswordAndTrevoHelper.GeneratePassword(30); hashedPassword = PasswordAndTrevoHelper.EncodePassword(model.NewPassword, salt); userDetails.Password = salt; userDetails.PasswordHash = hashedPassword; userDetails.ExternalAuthType = userDetails.ExternalAuthType == null ? string.Empty : userDetails.ExternalAuthType; userDetails.ExternalAuthUserId = userDetails.ExternalAuthUserId == null ? string.Empty : userDetails.ExternalAuthUserId; ReturnMsg msg = _userService.UpdateUserDetails(userDetails); if (!msg.IsSuccess) { return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Please try again later."))); } string SiteURL = ConfigurationManager.AppSettings["SiteURL"].ToString(); string InfoMail = ConfigurationManager.AppSettings["InfoMail"].ToString(); StreamReader reader = new StreamReader(System.Web.Hosting.HostingEnvironment.MapPath("~/Content/EmailTemplate/ChangePassword.html")); string readFile = reader.ReadToEnd(); string mailBody = ""; mailBody = readFile; TextInfo myTI = new CultureInfo("en-US", false).TextInfo; mailBody = mailBody.Replace("$$UserName$$", myTI.ToTitleCase(userDetails.Name)); ReturnMsg mailResult = SendMail.SendEmail(InfoMail, userDetails.Email_Id, "Password Changed", mailBody); } else { return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Passwords do not match."))); } } else { return(BadRequest("User not found.")); } } catch (System.Exception e) { return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e.Message))); } return(Ok("Password is successfully changed.")); }