コード例 #1
0
ファイル: RegisterCommand.cs プロジェクト: hesamkal2009/Store
        public async Task <Result> Handle(RegisterCommand request, CancellationToken cancellationToken)
        {
            var userDto = new UserDto
            {
                UserName           = request.UserName.Trim(),
                NormalizedUserName = request.UserName.Trim().ToUpper(),
                Email                = request.Email.Trim(),
                NormalizedEmail      = request.Email.Trim().ToUpper(),
                EmailConfirmed       = false,
                PhoneNumber          = request.PhoneNumber,
                PhoneNumberConfirmed = false,
                AccessFailedCount    = 0,
                LockoutEnabled       = false,
                LockoutEnd           = null,
                Password             = request.Password.Trim(),
                SecurityStamp        = null,
                ConcurrencyStamp     = null,
                TwoFactorEnabled     = false,
            };

            try
            {
                List <Claim> claims = new List <Claim>();
                claims?.AddRange(request.claims.Select(c => new Claim(c.ClaimType, c.ClaimValue)));

                var userResult = await _identityService.CreateUserAsync(userDto);

                if (userResult.Result.Errors.Any())
                {
                    return(Result.Failure(userResult.Result.Errors));
                }

                var claimResult = await _identityService.AddClaimsToUser(userResult.UserId, claims);

                var roleResult = await _identityService.AddUserToRolesAsync(userResult.UserId, request.Roles);

                return(userResult.Result.Succeeded &&
                       roleResult.Result.Succeeded &&
                       claimResult.Result.Succeeded
                ? Result.Success()
                : Result.Failure(new string[] { "User Creation Failed with Errors!" }));
            }
            catch (Exception ex)
            {
                return(Result.Failure(new string[] { ex.Message }));
            }
        }