public async Task <IActionResult> CreateAccountRequest([FromBody] UserCreateRequestDto request)
        {
            var currentUser = HttpContext.GetUserId();
            var result      = await identityService.CreateUserAsync(request, currentUser);

            return(StatusCode(result.StatusCode, result));
        }
示例#2
0
        async public Task <IResponseOutput> Create([FromBody] UserCreateRequestDto requestDto)
        {
            Department department = await _fsql.Select <Department>().Where(d => d.Id == requestDto.DepartmentId).FirstAsync();

            if (department == null)
            {
                throw new ArgumentException("无该部门");
            }

/*            Role role = await _fsql.Select<Role>().Where(r => r.Id == requestDto.RoleId).FirstAsync();
 *          if (role == null)
 *          {
 *              throw new ArgumentException("无该职位");
 *          }*/

            if (await _fsql.Select <User>().Where(u => u.UserName == requestDto.UserName).CountAsync() > 0)
            {
                throw new ArgumentException($"用户{requestDto.UserName}已经存在");
            }

            using (var uow = _fsql.CreateUnitOfWork()) //使用 UnitOfWork 事务
            {
                User user = _mapper.Map <User>(requestDto);
                user.CreatedAt = DateTime.Now;
                var ret = await _fsql.Insert(user).WithTransaction(uow.GetOrBeginTransaction()).ExecuteInsertedAsync();

                user = ret.FirstOrDefault();

/*                var userRole = await _fsql.Insert(new UserRole { UserId = user.Id, RoleId = role.Id, CreatedAt = DateTime.Now })
 *                  .WithTransaction(uow.GetOrBeginTransaction()).ExecuteInsertedAsync();*/
                if (!(user?.Id > 0))
                {
                    return(ResponseOutput.NotOk());
                }

                if (requestDto.RoleIds != null && requestDto.RoleIds.Any())
                {
                    var userRoles = requestDto.RoleIds.Select(r => new UserRole {
                        UserId = user.Id, RoleId = r
                    });
                    var userRolesRet = await _fsql.Insert(userRoles).WithTransaction(uow.GetOrBeginTransaction()).ExecuteInsertedAsync();
                }

                var responseDto = _mapper.Map <UserResponseDto>(user);
                uow.Commit();

/*                responseDto.RoleId = role.Id;
 *              responseDto.RoleName = role.Name;*/
                responseDto.DepartmentName = department.Name;
                return(ResponseOutput.Ok(responseDto));
            }
        }
示例#3
0
        private void CreateUser()
        {
            var request = new UserCreateRequestDto()
            {
                name = _inputField.text,
            };
            var url = NetworkManager.Instance.GetMethod(MethodType.PostUserCreate);

            _inputField.interactable = true;
            StartCoroutine(NetworkManager.Instance.WebRequest.Post <UserCreateRequestDto, UserCreateResponseDto>(url, request, response =>
            {
                var token = response.token;
                NetworkManager.Instance.WebRequest.SetToken(token);
                AuthtokenManager.Save(token);
                SceneManager.LoadScene("Menu");
            }, Debug.LogError));
        }
示例#4
0
        public async Task <RegistrationResponse> CreateUserAsync(UserCreateRequestDto request, string currentUser)
        {
            // Check existing user.
            var existingUser = await userManager.FindByNameAsync(request.Email);

            if (existingUser != null)
            {
                return(new RegistrationResponse {
                    IsSuccess = false, ResponseMessage = localizer["UserWithEmailExists"], StatusCode = (int)HttpStatusCode.BadRequest
                });
            }
            // Construct user object
            var user = new ApplicationUser
            {
                UserName    = request.Email,
                Email       = request.Email,
                PhoneNumber = request.PhoneNumber,
                FullName    = request.FullName,
                FullNameAr  = request.FullNameAr,
                CreatedBy   = currentUser
            };
            // Create user
            var result = await userManager.CreateAsync(user, request.Password);

            // Construct and return user creation error response
            if (!result.Succeeded)
            {
                return(new RegistrationResponse {
                    IsSuccess = false, ResponseMessage = localizer["RegisterUserResponseErrMsg"], ValidationErrors = result.Errors.Select(err => new ValidationError {
                        Name = err.Code, Description = err.Description
                    }).ToList()
                });
            }

            await userManager.AddClaimAsync(user, new Claim("UserType", "Employee"));

            // add roles to users
            IEnumerable <string> roles = request.Roles.Split(',');
            await userManager.AddToRolesAsync(user, roles);

            // Generate verification code and send it to client.
            var code = await userManager.GenerateChangePhoneNumberTokenAsync(user, request.PhoneNumber);

            var acceptLang = userDetectionService.GetAcceptLanguage();
            var lang       = !string.IsNullOrWhiteSpace(acceptLang.Substring(0, 2)) ? acceptLang.Substring(0, 2) : user.DefaultLang;
            // Send account verification email
            var sendMailResult = await messager.SendAccountVerificationEmail(request.Email, code, lang);

            if (!sendMailResult.Success)
            {
                return(new RegistrationResponse {
                    IsSuccess = false, ResponseMessage = sendMailResult.Message, StatusCode = 700, UserId = hasher.Encrypt(user.Id), PhoneNumber = hasher.Encrypt(user.PhoneNumber)
                });
            }

            //[TODO] SMS verification token.
            //if (await messager.SendSmsAsync(request.PhoneNumber, string.Format("your code is {0}", code)))
            //{
            //    return new RegistrationResponse { IsSuccess = true, ResponseMessage = "User registeration successfully.", StatusCode = 201, UserId = hasher.Encrypt(user.Id), PhoneNumber = hasher.Encrypt(user.PhoneNumber) };
            //}

            // add user roles here.
            return(new RegistrationResponse {
                IsSuccess = true, ResponseMessage = localizer["RegisterAccountSentVerificationSuccessMsg"], StatusCode = (int)HttpStatusCode.OK, UserId = hasher.Encrypt(user.Id), PhoneNumber = hasher.Encrypt(user.PhoneNumber)
            });
        }