コード例 #1
0
ファイル: AuthService.cs プロジェクト: VadimSadriev/oauth2.0
        public async Task Register(RegisterAccountContract contract)
        {
            // this query can have concurrency but since normalized username and email
            // columns have unique indexes then savechanges with same credentials
            // on different threads will cuz exception from db
            var existingUserName = await _userManager.FindByNameAsync(contract.UserName);

            if (existingUserName != null)
            {
                throw new BaseException("Account with same user name already exists");
            }

            var existingEmail = await _userManager.FindByEmailAsync(contract.Email);

            if (existingEmail != null)
            {
                throw new BaseException("Account with same email already exists");
            }

            var account = new Account
            {
                UserName = contract.UserName,
                Email    = contract.Email,
            };

            var result = await _userManager.CreateAsync(account, contract.Password);

            if (!result.Succeeded)
            {
                var descriptions = result.Errors.Select(x => x.Description);

                var error = descriptions.Aggregate((curr, next) => $"{curr}{Environment.NewLine}{next}");

                throw new BaseException(error);
            }
        }
コード例 #2
0
        public async Task <IActionResult> Register([FromBody] RegisterAccountContract contract)
        {
            await _authService.Register(contract);

            return(Ok());
        }