/// <summary> /// Первому пользовтаелю автоматом дадим права админа /// Второму - менеджера /// Всех регистриуем в юзерах если еще нет с таким логином /// </summary> /// <param name="userLogin"></param> private async Task AutoRegisterUser(string userLogin) { IdentityServerUserInfo userInfo = await _userSynchronizer.GetUserInfo(userLogin); PUser user = _userService.GetUserByExternalId(userInfo.id); if (user == null) { user = new PUser { ExternalId = userInfo.id, EMail = userInfo.email }; user = _userService.Create(user).Result; if (_userService.Get().Count() == 1) { AddUserRole(user, Roles.Admin.LogicalName); } else { if (_userService.Get().Count() == 2) { AddUserRole(user, Roles.Manager.LogicalName); } else { AddUserRole(user, Roles.User.LogicalName); } } } }
public async Task <IdentityServerUserInfo> GetUserInfo(string userLogin) { var disco = await DiscoveryClient.GetAsync(identityServerUrl); if (disco.IsError) { Console.WriteLine(disco.Error); return(null); } var tokenClient = new TokenClient(disco.TokenEndpoint, identityServiceClientId, identityServiceClientSecret); var tokenResponse = await tokenClient.RequestResourceOwnerPasswordAsync(login, password, "api1"); if (tokenResponse.IsError) { Console.WriteLine(tokenResponse.Error); return(null); } HttpClient httpClient = new HttpClient(); httpClient.SetBearerToken(tokenResponse.AccessToken); var res = httpClient.GetAsync($"{identityServerUrl}/api/user/getByLogin/{userLogin}").Result; if (res.IsSuccessStatusCode) { string userInfo = res.Content.ReadAsStringAsync().Result; IdentityServerUserInfo rr = JsonConvert.DeserializeObject <IdentityServerUserInfo>(userInfo); return(rr); } return(null); }