/// <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 })); }