Exemple #1
0
        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.")));
        }
Exemple #2
0
        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));
        }
Exemple #3
0
        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));
        }
Exemple #4
0
        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."));
        }