示例#1
0
        /// <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);
                    }
                }
            }
        }
示例#2
0
        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);
        }