Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        //
        // 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
            }));
        }
Ejemplo n.º 3
0
 public ActionResult Index()
 {
     using (ReadUnitOfWork)
     {
         var userService = new UserManageService(ReadUnitOfWork);
         var result      = userService.CheckUser("开发", "code");
         return(View());
     }
 }
Ejemplo n.º 4
0
        private bool HasPassword()
        {
            var user = UserManageService.FindById(User.Identity.GetUserId());

            if (user != null)
            {
                return(user.PasswordHash != null);
            }
            return(false);
        }
Ejemplo n.º 5
0
        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"));
        }
Ejemplo n.º 6
0
        private bool HasPhoneNumber()
        {
            var user = UserManageService.FindById(User.Identity.GetUserId());

            if (user != null)
            {
                return(user.PhoneNumber != null);
            }
            return(false);
        }
Ejemplo n.º 7
0
        //
        // 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 }));
        }
Ejemplo n.º 8
0
        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
            }));
        }
Ejemplo n.º 9
0
        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));
        }
Ejemplo n.º 10
0
        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 }));
        }
Ejemplo n.º 11
0
        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));
        }
Ejemplo n.º 12
0
        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());
        }
Ejemplo n.º 13
0
        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));
        }
Ejemplo n.º 14
0
        //
        // 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
            }));
        }
Ejemplo n.º 15
0
        //
        // 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));
        }
Ejemplo n.º 16
0
        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));
        }
Ejemplo n.º 17
0
        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);
        }
Ejemplo n.º 18
0
        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));
        }
Ejemplo n.º 19
0
 private void SetUserName(string name, bool isRegistred)
 {
     Session["UserName"] = isRegistred ? UserManageService.GetUserFirstName(name) : name;
 }
Ejemplo n.º 20
0
        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));
        }