Пример #1
0
        /// <summary>
        /// 创建新用户
        /// </summary>
        /// <param name="data">用户数据</param>
        /// <returns>新用户ID</returns>
        public async Task <int> CreateUserAsync([NotNull] PureUserData data)
        {
            UserCreateRequest request = new UserCreateRequest
            {
                Connection  = configuration.GetAuth0Config(ConfigurationKeyConstants.Auth0Connection),
                Email       = data.Email,
                PhoneNumber = data.PhoneNumber
            };

            User user = await userClient.CreateAsync(request);

            if (user == null)
            {
                return(-1);
            }

            int nextId = dataContext.UserDatas.Select((data) => data.ID).Max() + 1;

            // 获取可用身份列表
            Role[] availableRoles = await roleGetter.GetAvailableRoles();

            // 去除重复项与不在身份列表内的项
            string[] roles = data.Role.Split(' ').Distinct()
                             .Where((name) => availableRoles.Any((role) => role.Name == name)).ToArray();

            await userClient.AssignRolesAsync(user.UserId, new AssignRolesRequest { Roles = roles });

            data.Role = roles.Aggregate((r1, r2) => r1 + ' ' + r2);

            dataContext.Add <UserData>(data.ToUserData(nextId, user.UserId));
            dataContext.SaveChanges();
            return(nextId);
        }
        public async Task <IActionResult> Create([FromBody] PureUserData data)
        {
            int id = await managementService.CreateUserAsync(data);

            if (id == -1)
            {
                return(Problem(statusCode: StatusCodes.Status500InternalServerError));
            }
            return(Ok(new { id }));
        }