예제 #1
0
        /// <summary>
        /// Get the user details asynchronous.
        /// </summary>
        /// <param name="userId">The user id.</param>
        /// <returns>returns the user details.</returns>
        public async Task <User> GetUserAsync(string userId)
        {
            if (userId == null)
            {
                throw new ArgumentNullException(nameof(userId));
            }

            try
            {
                string token = await KeyCloakClientAuthentication.GetTokenAsync(this.BaseUrl, this.Realm,
                                                                                this.ClientId, this.ClientSecret);

                var keyCloakClient = new RestClient();
                keyCloakClient.BaseUrl = this.GetBaseUrl();
                var request = new RestRequest("/users/{id}", Method.GET);
                request.AddUrlSegment(_userId, userId);
                request.AddHeader(authHeader, token);
                request.RequestFormat = DataFormat.Json;
                var response = await keyCloakClient.ExecuteAsync(request);

                if (response.IsSuccessful)
                {
                    var user = JsonConvert.DeserializeObject <User>(response.Content);
                    return(user);
                }

                return(null);
            }
            catch (Exception)
            {
                throw;
            }
        }
예제 #2
0
        /// <summary>
        /// Update the user asynchronous.
        /// </summary>
        /// <param name="userModel">The registration model.</param>
        /// <returns>
        /// returns result.
        /// </returns>
        /// <exception cref="NotImplementedException"></exception>
        public async Task <bool> UpdateUserAsync(User userModel)
        {
            if (userModel == null)
            {
                throw new ArgumentNullException(nameof(userModel));
            }

            try
            {
                string token = await KeyCloakClientAuthentication.GetTokenAsync(this.BaseUrl, this.Realm,
                                                                                this.ClientId, this.ClientSecret);

                var keyCloakClient = new RestClient();
                keyCloakClient.BaseUrl = this.GetBaseUrl();
                var request = new RestRequest("/users/{id}", Method.PUT);
                request.AddUrlSegment(_userId, userModel.UserId);
                request.AddHeader(authHeader, token);
                request.AddHeader("Content-Type", "application/json");
                request.RequestFormat = DataFormat.Json;
                var jsonModel = JsonConvert.SerializeObject(userModel);
                request.AddParameter("application/json", jsonModel, ParameterType.RequestBody);
                var response = await keyCloakClient.ExecuteAsync(request);

                if (!response.IsSuccessful)
                {
                    var errorMessage = JsonConvert.DeserializeObject <ErrorResponse>(response.Content);
                    throw new System.InvalidOperationException(errorMessage.ErrorMessage);
                }
                return(response.IsSuccessful);
            }
            catch (Exception)
            {
                throw;
            }
        }
예제 #3
0
        /// <summary>
        /// The get users.
        /// </summary>
        /// <param name="userName">The user name.</param>
        /// <param name="firstName">The first name.</param>
        /// <param name="lastName">The last name.</param>
        /// <param name="index">The index.</param>
        /// <param name="pageSize">The page size.</param>
        /// <returns>return user list.</returns>
        public async Task <List <User> > GetUsersAsync(string userName, string firstName, string lastName, int index, int pageSize)
        {
            try
            {
                string token = await KeyCloakClientAuthentication.GetTokenAsync(this.BaseUrl, this.Realm,
                                                                                this.ClientId, this.ClientSecret);

                var keyCloakClient = new RestClient();
                keyCloakClient.BaseUrl = this.GetBaseUrl();
                var request = new RestRequest("/users"
                                              , Method.GET);
                request.AddQueryParameter(_userName, userName);
                request.AddQueryParameter(_firstName, firstName);
                request.AddQueryParameter(_lastName, lastName);
                request.AddQueryParameter(_first, index.ToString());
                request.AddQueryParameter(_max, pageSize.ToString());
                request.AddHeader(authHeader, token);
                request.RequestFormat = DataFormat.Json;
                var response = await keyCloakClient.ExecuteAsync(request);

                if (response.IsSuccessful)
                {
                    var user = JsonConvert.DeserializeObject <List <User> >(response.Content);
                    return(user);
                }

                else
                {
                    var errorMessage = JsonConvert.DeserializeObject <ErrorResponse>(response.Content);
                    throw new System.InvalidOperationException(errorMessage.ErrorMessage);
                }
            }
            catch (Exception)
            {
                throw;
            }
        }