public async Task <ActionResult> Register(RegisterViewModel model) { if (ModelState.IsValid) { var user = Mapper.Map <UserServiceModel>(model);//new User { UserName = model.Email, Email = model.Email, UserSurname = model.Surname,UserFirstName = model.Name,PhoneNumber = model.PhoneNumber }; var result = await UserManageService.CreateAsync(user, model.Password); if (result.Succeeded) { SetUserName(user.UserFirstName, isRegistred: false); await UserManageService.AddToRoleAsync(user.Id, model.Role); await SignInManageService.SignInAsync(user, isPersistent : false, rememberBrowser : false);//SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false); // Дополнительные сведения о том, как включить подтверждение учетной записи и сброс пароля, см. по адресу: http://go.microsoft.com/fwlink/?LinkID=320771 // Отправка сообщения электронной почты с этой ссылкой // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id); // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme); // await UserManager.SendEmailAsync(user.Id, "Подтверждение учетной записи", "Подтвердите вашу учетную запись, щелкнув <a href=\"" + callbackUrl + "\">здесь</a>"); return(RedirectToAction("Index", "Home")); } AddErrors(result); } model.Roles = GetRoles(); return(View(model)); }
// // POST: /Manage/AddPhoneNumber //[HttpPost] //[ValidateAntiForgeryToken] //public async Task<ActionResult> AddPhoneNumber(AddPhoneNumberViewModel model) //{ // if (!ModelState.IsValid) // { // return View(model); // } // // Создание и отправка маркера // var code = await UserManageService.GenerateChangePhoneNumberTokenAsync(User.Identity.GetUserId(), model.Number); // if (UserManageService.SmsService != null) // { // var message = new IdentityMessage // { // Destination = model.Number, // Body = "Ваш код безопасности: " + code // }; // await UserManageService.SmsService.SendAsync(message); // } // return RedirectToAction("VerifyPhoneNumber", new { PhoneNumber = model.Number }); //} // // POST: /Manage/EnableTwoFactorAuthentication //[HttpPost] //[ValidateAntiForgeryToken] //public async Task<ActionResult> EnableTwoFactorAuthentication() //{ // await UserManager.SetTwoFactorEnabledAsync(User.Identity.GetUserId(), true); // var user = await UserManager.FindByIdAsync(User.Identity.GetUserId()); // if (user != null) // { // await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false); // } // return RedirectToAction("Index", "Manage"); //} // // POST: /Manage/DisableTwoFactorAuthentication //[HttpPost] //[ValidateAntiForgeryToken] //public async Task<ActionResult> DisableTwoFactorAuthentication() //{ // await UserManager.SetTwoFactorEnabledAsync(User.Identity.GetUserId(), false); // var user = await UserManager.FindByIdAsync(User.Identity.GetUserId()); // if (user != null) // { // await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false); // } // return RedirectToAction("Index", "Manage"); //} // // GET: /Manage/VerifyPhoneNumber public async Task <ActionResult> VerifyPhoneNumber(string phoneNumber) { var code = await UserManageService.GenerateChangePhoneNumberTokenAsync(User.Identity.GetUserId(), phoneNumber); // Отправка SMS через поставщик SMS для проверки номера телефона return(phoneNumber == null?View("Error") : View(new VerifyPhoneNumberViewModel { PhoneNumber = phoneNumber })); }
public ActionResult Index() { using (ReadUnitOfWork) { var userService = new UserManageService(ReadUnitOfWork); var result = userService.CheckUser("开发", "code"); return(View()); } }
private bool HasPassword() { var user = UserManageService.FindById(User.Identity.GetUserId()); if (user != null) { return(user.PasswordHash != null); } return(false); }
public async Task <ActionResult> ConfirmEmail(string userId, string code) { if (userId == null || code == null) { return(View("Error")); } var result = await UserManageService.ConfirmEmailAsync(userId, code);//UserManager.ConfirmEmailAsync(userId, code); return(View(result.Succeeded ? "ConfirmEmail" : "Error")); }
private bool HasPhoneNumber() { var user = UserManageService.FindById(User.Identity.GetUserId()); if (user != null) { return(user.PhoneNumber != null); } return(false); }
// // GET: /Manage/LinkLoginCallback public async Task <ActionResult> LinkLoginCallback() { var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync(XsrfKey, User.Identity.GetUserId()); if (loginInfo == null) { return(RedirectToAction("ManageLogins", new { Message = ManageMessageId.Error })); } var result = await UserManageService.AddLoginAsync(User.Identity.GetUserId(), loginInfo.Login); return(result.Succeeded ? RedirectToAction("ManageLogins") : RedirectToAction("ManageLogins", new { Message = ManageMessageId.Error })); }
public async Task <ActionResult> SendCode(string returnUrl, bool rememberMe) { var userId = await SignInManageService.GetVerifiedUserIdAsync(); if (userId == null) { return(View("Error")); } var userFactors = await UserManageService.GetValidTwoFactorProvidersAsync(userId); var factorOptions = userFactors.Select(purpose => new SelectListItem { Text = purpose, Value = purpose }).ToList(); return(View(new SendCodeViewModel { Providers = factorOptions, ReturnUrl = returnUrl, RememberMe = rememberMe })); }
public async Task <ActionResult> ChangePassword(ChangePasswordViewModel model) { if (!ModelState.IsValid) { return(View(model)); } var result = await UserManageService.ChangePasswordAsync(User.Identity.GetUserId(), model.OldPassword, model.NewPassword); if (result.Succeeded) { var user = await UserManageService.FindByIdAsync(User.Identity.GetUserId()); if (user != null) { await SignInManageService.SignInAsync(user, isPersistent : false, rememberBrowser : false); } return(RedirectToAction("Index", new { Message = ManageMessageId.ChangePasswordSuccess })); } AddErrors(result); return(View(model)); }
public async Task <ActionResult> RemoveLogin(string loginProvider, string providerKey) { ManageMessageId?message; var result = await UserManageService.RemoveLoginAsync(User.Identity.GetUserId(), loginProvider, providerKey);//UserManager.RemoveLoginAsync(User.Identity.GetUserId(), new UserLoginInfo(loginProvider, providerKey)); if (result.Succeeded) { var user = await UserManageService.FindByIdAsync(User.Identity.GetUserId()); if (user != null) { await SignInManageService.SignInAsync(user, isPersistent : false, rememberBrowser : false); } message = ManageMessageId.RemoveLoginSuccess; } else { message = ManageMessageId.Error; } return(RedirectToAction("ManageLogins", new { Message = message })); }
public async Task <ActionResult> SetPassword(SetPasswordViewModel model) { if (ModelState.IsValid) { var result = await UserManageService.AddPasswordAsync(User.Identity.GetUserId(), model.NewPassword); if (result.Succeeded) { var user = await UserManageService.FindByIdAsync(User.Identity.GetUserId()); if (user != null) { await SignInManageService.SignInAsync(user, isPersistent : false, rememberBrowser : false); } return(RedirectToAction("Index", new { Message = ManageMessageId.SetPasswordSuccess })); } AddErrors(result); } // Это сообщение означает наличие ошибки; повторное отображение формы return(View(model)); }
public async Task <ActionResult> ResetPassword(ResetPasswordViewModel model) { if (!ModelState.IsValid) { return(View(model)); } var user = await UserManageService.FindByName(model.Email); if (user == null) { // Не показывать, что пользователь не существует return(RedirectToAction("ResetPasswordConfirmation", "Account")); } var result = await UserManageService.ResetPasswordAsync(user.Id, model.Code, model.Password); if (result.Succeeded) { return(RedirectToAction("ResetPasswordConfirmation", "Account")); } AddErrors(result); return(View()); }
public async Task <ActionResult> ForgotPassword(ForgotPasswordViewModel model) { if (ModelState.IsValid) { var user = await UserManageService.FindByName(model.Email); if (user == null || !(await UserManageService.IsEmailConfirmedAsync(user.Id))) { // Не показывать, что пользователь не существует или не подтвержден return(View("ForgotPasswordConfirmation")); } // Дополнительные сведения о том, как включить подтверждение учетной записи и сброс пароля, см. по адресу: http://go.microsoft.com/fwlink/?LinkID=320771 // Отправка сообщения электронной почты с этой ссылкой // string code = await UserManager.GeneratePasswordResetTokenAsync(user.Id); // var callbackUrl = Url.Action("ResetPassword", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme); // await UserManager.SendEmailAsync(user.Id, "Сброс пароля", "Сбросьте ваш пароль, щелкнув <a href=\"" + callbackUrl + "\">здесь</a>"); // return RedirectToAction("ForgotPasswordConfirmation", "Account"); } // Появление этого сообщения означает наличие ошибки; повторное отображение формы return(View(model)); }
// // GET: /Manage/ManageLogins public async Task <ActionResult> ManageLogins(ManageMessageId?message) { ViewBag.StatusMessage = message == ManageMessageId.RemoveLoginSuccess ? "Внешнее имя входа удалено." : message == ManageMessageId.Error ? "Произошла ошибка." : ""; var user = await UserManageService.FindByIdAsync(User.Identity.GetUserId()); if (user == null) { return(View("Error")); } var userLogins = await UserManageService.GetLoginsAsync(User.Identity.GetUserId()); var otherLogins = AuthenticationManager.GetExternalAuthenticationTypes().Where(auth => userLogins.All(ul => auth.AuthenticationType != ul.LoginProvider)).ToList(); ViewBag.ShowRemoveButton = user.PasswordHash != null || userLogins.Count > 1; return(View(new ManageLoginsViewModel { CurrentLogins = userLogins, OtherLogins = otherLogins })); }
// // GET: /Manage/Index public async Task <ActionResult> Index(ManageMessageId?message) { ViewBag.StatusMessage = message == ManageMessageId.ChangePasswordSuccess ? "Ваш пароль изменен." : message == ManageMessageId.SetPasswordSuccess ? "Пароль задан." : message == ManageMessageId.SetTwoFactorSuccess ? "Настроен поставщик двухфакторной проверки подлинности." : message == ManageMessageId.Error ? "Произошла ошибка." : message == ManageMessageId.AddPhoneSuccess ? "Ваш номер телефона добавлен." : message == ManageMessageId.RemovePhoneSuccess ? "Ваш номер телефона удален." : ""; var userId = User.Identity.GetUserId(); var model = new IndexViewModel { HasPassword = HasPassword(), PhoneNumber = await UserManageService.GetPhoneNumberAsync(userId), TwoFactor = await UserManageService.GetTwoFactorEnabledAsync(userId), Logins = await UserManageService.GetLoginsAsync(userId), BrowserRemembered = await AuthenticationManager.TwoFactorBrowserRememberedAsync(userId) }; return(View(model)); }
public async Task <ActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl) { if (User.Identity.IsAuthenticated) { return(RedirectToAction("Index", "Manage")); } if (ModelState.IsValid) { // Получение сведений о пользователе от внешнего поставщика входа var info = await AuthenticationManager.GetExternalLoginInfoAsync(); if (info == null) { return(View("ExternalLoginFailure")); } var user = Mapper.Map <UserServiceModel>(model);//new User { UserName = model.Email, Email = model.Email }; var result = await UserManageService.CreateAsync(user); if (result.Succeeded) { result = await UserManageService.AddLoginAsync(user.Id, info.Login);//UserManager.AddLoginAsync(user.Id, info.Login); if (result.Succeeded) { await SignInManageService.SignInAsync(user, isPersistent : false, rememberBrowser : false); return(RedirectToLocal(returnUrl)); } } AddErrors(result); } ViewBag.ReturnUrl = returnUrl; return(View(model)); }
private Message UserLogin(HttpContext context) { Message jMessage = new Message(); string LoginID = string.Empty; string LoginPsw = string.Empty; if (context.Request.Form["Name"] != null && context.Request.Form["Name"].ToString().Trim() != string.Empty) { LoginID = context.Request.Form["Name"].ToString().Trim(); } if (context.Request.Form["Password"] != null) { LoginPsw = context.Request.Form["Password"].ToString().Trim(); } if (LoginID == string.Empty) { jMessage = new Message() { Result = false, TxtMessage = "登录账号格式不正确。" }; } else { Olb_User Loginer = UserManageService.GetInstance().GetUserByAccount(LoginID); if (Loginer != null && Loginer.Account != string.Empty) { if (Loginer.PassWord == Md5.GetMd5(LoginPsw)) { jMessage = new Message() { Result = true, TxtMessage = "登录成功。" }; string webCookie = context.Session.SessionID.ToString(); LoginerManageService.GetInstance().UserLogin(Md5.GetMd5(webCookie), Loginer.Account); Loginer.PassWord = string.Empty; context.Session["LoginCompanyOperator"] = Loginer; } else { jMessage = new Message() { Result = false, TxtMessage = "密码错误。" }; } } else { jMessage = new Message() { Result = false, TxtMessage = "登录账号不存在。" }; } } return(jMessage); }
public override void DoLoginedHandlerWork(HttpContext context) { Message jsonMessage; jsonMessage = new Message() { Result = false, TxtMessage = "权限验证失败,可能原因:\n1、数据中心通讯失败。\n2、系统管理员未与您分配对应操作权限。" }; string AjaxType = context.Request.QueryString["AType"] == null ? string.Empty : context.Request.QueryString["AType"].ToString().ToUpper(); try { switch (AjaxType) { case "LOADLOGINER": jsonMessage = new Message() { Result = true, TxtMessage = JSon.TToJson <Olb_User>(base.loginOperator) }; break; case "USEREDIT": Olb_User user = base.loginOperator; if (context.Request.Form["Name"] != null && context.Request.Form["Name"].ToString().Trim() != string.Empty) { user.Name = context.Request.Form["Name"].ToString().Trim(); } if (context.Request.Form["IdentityCard"] != null && context.Request.Form["IdentityCard"].ToString().Trim() != string.Empty) { user.IdentityCard = context.Request.Form["IdentityCard"].ToString().Trim(); } if (context.Request.Form["Address"] != null && context.Request.Form["Address"].ToString().Trim() != string.Empty) { user.Address = context.Request.Form["Address"].ToString().Trim(); } jsonMessage = UserManageService.GetInstance().Edit(user); break; case "UPDATEPWD": string oldPwd = "", newPwd = "", account = ""; if (context.Request.Form["oldPwd"] != null && context.Request.Form["oldPwd"].ToString().Trim() != string.Empty) { oldPwd = context.Request.Form["oldPwd"].ToString().Trim(); } if (context.Request.Form["newPwd"] != null && context.Request.Form["newPwd"].ToString().Trim() != string.Empty) { newPwd = context.Request.Form["newPwd"].ToString().Trim(); } if (oldPwd != "" && newPwd != "" && account != "") { account = base.loginOperator.Account; oldPwd = Md5.GetMd5(oldPwd); newPwd = Md5.GetMd5(newPwd); jsonMessage = UserManageService.GetInstance().UpdatePwd(oldPwd, newPwd, account); } break; default: jsonMessage = new Message() { Result = false, TxtMessage = "操作未定义。" }; break; } } catch (Exception ex) { jsonMessage = new Message() { Result = false, TxtMessage = ex.Message }; } finally { } context.Response.Write(JSon.TToJson <Message>(jsonMessage)); }
private void SetUserName(string name, bool isRegistred) { Session["UserName"] = isRegistred ? UserManageService.GetUserFirstName(name) : name; }
public override void DoNoLoginHandlerWork(HttpContext context) { Message jsonMessage = new Message(); //获取操作类型AType:ADD,EDIT,DELETE,QUERY string AjaxType = context.Request.QueryString["AType"] == null ? string.Empty : context.Request.QueryString["AType"].ToString().ToUpper(); switch (AjaxType) { case "USERLOGIN": jsonMessage = UserLogin(context); break; case "USERLOGINOUT": if (context.Session["LoginCompanyOperator"] != null) { context.Session.Remove("LoginCompanyOperator"); } string webCookie = context.Session.SessionID.ToString(); jsonMessage = LoginerManageService.GetInstance().UnLRegisterClientByMd5Cookie(Md5.GetMd5(webCookie)); break; case "USERREGISTER": try { string name = "", pwd = ""; if (context.Request.Form["Name"] != null && context.Request.Form["Name"].ToString().Trim() != string.Empty) { name = context.Request.Form["Name"].ToString().Trim(); } if (context.Request.Form["Password"] != null && context.Request.Form["Password"].ToString().Trim() != string.Empty) { pwd = context.Request.Form["Password"].ToString().Trim(); } if (name != "" && pwd != "") { Olb_User user = new Olb_User(); user.Account = name; user.PassWord = Md5.GetMd5(pwd); jsonMessage = UserManageService.GetInstance().Add(user); if (jsonMessage.Result) { Olb_User Loginer = UserManageService.GetInstance().GetUserByAccount(name); webCookie = context.Session.SessionID.ToString(); LoginerManageService.GetInstance().UserLogin(Md5.GetMd5(webCookie), Loginer.Account); Loginer.PassWord = string.Empty; context.Session["LoginCompanyOperator"] = Loginer; } } } catch (Exception e) { } break; case "CHECKCODE": string code = ""; if (context.Request.Form["Code"] != null && context.Request.Form["Code"].ToString().Trim() != string.Empty) { code = context.Request.Form["Code"].ToString().Trim(); } string validCode = context.Session["CheckCode"] as String; //获取系统生成的验证码 if (!string.IsNullOrEmpty(validCode) && !string.IsNullOrEmpty(code)) { if (code.ToLower() == validCode.ToLower()) { jsonMessage = new Message() { Result = true, TxtMessage = "ok" }; } else { jsonMessage = new Message() { Result = false, TxtMessage = "验证码错误" }; } } break; default: jsonMessage = new Message() { Result = false, TxtMessage = "操作未定义。" }; break; } context.Response.Write(JSon.TToJson <Message>(jsonMessage)); }