Esempio n. 1
0
        public async Task <IActionResult> Create(CreateUser model)
        {
            if (string.IsNullOrWhiteSpace(model.UserName))
            {
                return(Warning(Resources.UserNameNotNull));
            }

            if (string.IsNullOrWhiteSpace(model.Password))
            {
                return(Warning(Resources.PasswordNotNull));
            }

            if (model.Password != model.ConfirmPassword)
            {
                return(Warning(Resources.PasswordAndConfirmPasswordNotEqual));
            }

            model.UserName = model.UserName.Trim();
            model.Password = model.Password.Trim();
            if (model.Password.Length < 6)
            {
                return(Warning(Resources.PasswordInvalid));
            }

            if (model.IgnoreDisallowNames && await _nameManager.IsDisallowedAsync(model.UserName))
            {
                return(Warning(Resources.UserNameDisallowed));
            }

            if (await _userManager.CheckUserNameAsync(model.UserName))
            {
                return(Warning(Resources.UserNameDuplicate));
            }

            var user = new User();

            user.UserName       = model.UserName;
            user.NickName       = model.UserName;
            user.Email          = model.Email;
            user.EmailConfirmed = model.IgnoreEmailConfirm;
            var result = await _userManager.CreateAsync(user, SecurityHelper.CreatePassword(model.UserName, model.Password), IdentitySettings.Register);

            if (result.Succeeded)
            {
                if (model.IgnoreEmailConfirm)
                {
                    return(Success("你已经成功添加了用户!"));
                }
                return(Success("你已经成功添加了用户,可以让用户登陆邮件激活账户!"));
            }
            _logger.LogWarning(SecuritySettings.EventId, "注册账户[{0}]失败.", user.UserName);
            var error = result.Errors.FirstOrDefault();

            if (error != null)
            {
                return(Error(Resources.ResourceManager.GetString(error.Code)));
            }
            return(Error("添加用户失败!"));
        }
Esempio n. 2
0
        public async Task <IActionResult> Register(RegisterUser model)
        {
            if (string.IsNullOrWhiteSpace(model.UserName))
            {
                return(Warning(Resources.UserNameNotNull));
            }

            if (string.IsNullOrWhiteSpace(model.Password))
            {
                return(Warning(Resources.PasswordNotNull));
            }

            if (model.Password != model.ConfirmPassword)
            {
                return(Warning(Resources.PasswordAndConfirmPasswordNotEqual));
            }

            model.UserName = model.UserName.Trim();
            model.Password = model.Password.Trim();
            if (model.Password.Length < 6)
            {
                return(Warning(Resources.PasswordInvalid));
            }

            if (await _nameManager.IsDisallowedAsync(model.UserName))
            {
                return(Warning(Resources.UserNameDisallowed));
            }

            if (await _userManager.CheckUserNameAsync(model.UserName))
            {
                return(Warning(Resources.UserNameDuplicate));
            }

            var user = new User();

            user.UserName = model.UserName;
            user.NickName = model.UserName;
            user.Email    = model.Email;
            var result = await _userManager.CreateAsync(user, SecurityHelper.CreatePassword(model.UserName, model.Password), IdentitySettings.Register);

            if (result.Succeeded)
            {
                try
                {
                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    var callbackUrl = ActionUrl("ConfirmEmail", new { userId = user.UserId, code });
                    await
                    _emailSender.SendEmailAsync(user, Resources.Email_ActiveAccount,
                                                Resources.Email_ActiveAccount_Body.ReplaceBy(
                                                    kw =>
                    {
                        kw.Add("name", user.NickName);
                        kw.Add("link", callbackUrl);
                    }));

                    _logger.LogInformation(SecuritySettings.EventId, "注册了账户[{0}].", user.UserName);
                    return(Success("一封激活邮件已经发送到你的邮箱!该激活链接24小时内有效!"));
                }
                catch (Exception exception)
                {
                    _logger.LogError(EmailSettings.EventId, exception, "邮件发送失败:" + exception.Message);
                    return(Warning("账户已经成功注册,但是激活邮件发送失败,请联系网站管理员!"));
                }
            }
            _logger.LogWarning(SecuritySettings.EventId, "注册账户[{0}]失败.", user.UserName);
            var error = result.Errors.FirstOrDefault();

            if (error != null)
            {
                return(Error(Resources.ResourceManager.GetString(error.Code)));
            }
            return(Error("注册失败!"));
        }