public IHttpActionResult ForgotPassword(ForgotPasswordViewModel model) { ReturnMsg obj = new ReturnMsg(); try { if (!ModelState.IsValid) { string message = string.Join("", ErrorHelper.GetErrorListFromModelState(ModelState)); return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Forbidden, message))); } bool isValidEmail = ValidateEmail(model.Email); if (!isValidEmail) { return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Please give a valid email."))); } var userDetails = _userService.GetUserDetailsByEmail(model.Email); if (userDetails != null) { string password = ""; string salt = ""; string ranPass = ""; PasswordAndTrevoHelper.GetRandomPassword(ref password, ref salt, ref ranPass); userDetails.Password = salt; userDetails.PasswordHash = password; _userService.UpdateUserDetails(userDetails); string SiteURL = ConfigurationManager.AppSettings["SiteURL"].ToString(); string InfoMail = ConfigurationManager.AppSettings["InfoMail"].ToString(); StreamReader reader = new StreamReader(System.Web.Hosting.HostingEnvironment.MapPath("~/Content/EmailTemplate/ForgotPasswordReset.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)); mailBody = mailBody.Replace("$$Password$$", ranPass); ReturnMsg mailResult = SendMail.SendEmail(InfoMail, userDetails.Email_Id, "Password Reset", mailBody); } else { return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "User not found."))); } } catch (Exception e) { return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e.Message))); } return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.OK, "Your password has been sent into your mailbox."))); }
public IHttpActionResult Login(LoginViewModel model) { string errorMessage = string.Empty; UserInfoViewModel obj = new UserInfoViewModel(); try { if (!ModelState.IsValid) { errorMessage = String.Join(",", ErrorHelper.GetErrorListFromModelState(ModelState)); return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.BadRequest, errorMessage))); } bool isValidEmail = ValidateEmail(model.Email); if (!isValidEmail) { return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Please give a valid email."))); } if (string.IsNullOrEmpty(model.Email)) { return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Either First Name or Email or Phone is required."))); } var userDetails = _userService.GetUserDetailsByEmail(model.Email); if (userDetails != null) { string salt = userDetails.Password; string hashedPassword = PasswordAndTrevoHelper.EncodePassword(model.Password, salt); if (userDetails.PasswordHash != hashedPassword) { return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Password does not match."))); } obj.Email = userDetails.Email_Id; if (string.IsNullOrEmpty(userDetails.ImagePath)) { obj.ImagePath = noImagePath; } else { var extension = userDetails.ImagePath.Split('.')[1]; var imageName = userDetails.ImagePath.Split('.')[0] + "_thumbnail"; obj.ImagePath = proImagePath + imageName + "." + extension; } obj.IsVerified = userDetails.IsVerified; obj.Name = userDetails.Name; obj.UserID = userDetails.User_Id; var userLangDetails = _userLanguageService.GetLanguageListByUserId(obj.UserID); if (userLangDetails != null) { var langDetails = _langService.GetLanguageDetailsById(userLangDetails.Native_LanguageId); if (langDetails != null) { obj.NativeLangugae = langDetails.Abbreviation; } langDetails = _langService.GetLanguageDetailsById(userLangDetails.Learning_LanguageId); if (langDetails != null) { obj.LearningLanguage = langDetails.Abbreviation; } } obj.FavMomentList = new List <long>(); var momentList = _favService.GetFavouritesListByUserId(userDetails.User_Id).Where(a => a.MomentId != 0).ToList(); foreach (var item in momentList) { obj.FavMomentList.Add(item.MomentId); } } else { return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "User not found with the email."))); } } catch (System.Exception e) { return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e.Message))); } return(Ok(obj)); }
public IHttpActionResult ExternalAuthRegister(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)); } if (string.IsNullOrEmpty(model.ExternalAuthType)) { return(BadRequest("External Auth Type is required.")); } if (string.IsNullOrEmpty(model.ExternalAuthUserId)) { return(BadRequest("External Auth User Id is required.")); } 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."))); } 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 = string.Empty; user.PasswordHash = string.Empty; 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; user.ExternalAuthUserId = 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; } 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.")); }