Beispiel #1
0
        public async Task <AddPermissionResponse> ExecuteAsync(PostPermission request, string url, string token)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            if (url == null)
            {
                throw new ArgumentNullException(nameof(url));
            }

            if (string.IsNullOrWhiteSpace(token))
            {
                throw new ArgumentNullException(nameof(token));
            }

            var httpClient = _httpClientFactory.GetHttpClient();
            var serializedPostPermission = JsonConvert.SerializeObject(request);
            var body        = new StringContent(serializedPostPermission, Encoding.UTF8, "application/json");
            var httpRequest = new HttpRequestMessage
            {
                Method     = HttpMethod.Post,
                Content    = body,
                RequestUri = new Uri(url)
            };

            httpRequest.Headers.Add("Authorization", "Bearer " + token);
            var result = await httpClient.SendAsync(httpRequest).ConfigureAwait(false);

            result.EnsureSuccessStatusCode();
            var content = await result.Content.ReadAsStringAsync().ConfigureAwait(false);

            return(JsonConvert.DeserializeObject <AddPermissionResponse>(content));
        }
Beispiel #2
0
        public async Task <ActionResult> PostPermission([FromBody] PostPermission postPermission)
        {
            if (postPermission == null)
            {
                return(BuildError(ErrorCodes.InvalidRequestCode, "no parameter in body request", HttpStatusCode.BadRequest));
            }

            var parameter = postPermission.ToParameter();
            var clientId  = this.GetClientId();

            if (string.IsNullOrWhiteSpace(clientId))
            {
                return(BuildError(ErrorCodes.InvalidRequestCode, "the client_id cannot be extracted", HttpStatusCode.BadRequest));
            }

            var ticketId = await _permissionControllerActions.Add(parameter, clientId);

            var result = new AddPermissionResponse
            {
                TicketId = ticketId
            };

            return(new ObjectResult(result)
            {
                StatusCode = (int)HttpStatusCode.Created
            });
        }
Beispiel #3
0
 public static AddPermissionParameter ToParameter(this PostPermission postPermission)
 {
     return(new AddPermissionParameter
     {
         ResourceSetId = postPermission.ResourceSetId,
         Scopes = postPermission.Scopes
     });
 }
Beispiel #4
0
        private async Task <AddPermissionResponse> AddPermission(string resourceId, IEnumerable <string> scopes, string accessToken)
        {
            var postPermission = new PostPermission
            {
                ResourceSetId = resourceId,
                Scopes        = scopes
            };

            return(await _identityServerUmaClientFactory.GetPermissionClient().AddByResolution(postPermission, _securityOptions.UmaConfigurationUrl, accessToken));
        }
        public async Task <ActionResult> PostPermission([FromBody] PostPermission postPermission)
        {
            if (postPermission == null)
            {
                throw new ArgumentNullException(nameof(postPermission));
            }

            var parameter = postPermission.ToParameter();
            var clientId  = this.GetClientId();
            var ticketId  = await _permissionControllerActions.Add(parameter, clientId);

            var result = new AddPermissionResponse
            {
                TicketId = ticketId
            };

            return(new ObjectResult(result)
            {
                StatusCode = (int)HttpStatusCode.Created
            });
        }
        public async Task <ActionResult> PostPermission([FromBody] PostPermission postPermission)
        {
            if (postPermission == null)
            {
                return(BuildError(ErrorCodes.InvalidRequestCode, "no parameter in body request", HttpStatusCode.BadRequest));
            }

            var audiences = GetAudiences();
            var parameter = postPermission.ToParameter();
            var ticketId  = await _permissionControllerActions.Add(audiences, parameter);

            var result = new AddPermissionResponse
            {
                TicketId = ticketId
            };

            return(new ObjectResult(result)
            {
                StatusCode = (int)HttpStatusCode.Created
            });
        }
        public async Task <AddPermissionResponse> AddByResolution(PostPermission request, string url, string token)
        {
            var configuration = await _getConfigurationOperation.ExecuteAsync(UriHelpers.GetUri(url));

            return(await Add(request, configuration.PermissionRegistrationEndPoint, token));
        }
 public Task <AddPermissionResponse> Add(PostPermission request, string url, string token)
 {
     return(_addPermissionsOperation.ExecuteAsync(request, url, token));
 }
        public IActionResult SendRequestAnswer([FromBody] RequestAnswerViewModel model)
        {
            //Получаем из токена username
            var username          = User.Identity.Name;
            int group_id          = model.GroupId;
            var requesterUsername = model.UserName;

            //Ищем администратора
            var user = _context.Users
                       .Include(u => u.UserGroups)
                       .ThenInclude(ug => ug.Group)
                       .FirstOrDefault(u => u.Username == username);

            //Ищем пользователя, который сделал запрос
            var requesterUser = _context.Users
                                .Include(u => u.UserGroups)
                                .ThenInclude(ug => ug.Group)
                                .FirstOrDefault(u => u.Username == requesterUsername);

            //Ищем данную группу
            var group = _context.Groups
                        .Include(g => g.UserGroups)
                        .ThenInclude(ug => ug.User)
                        .FirstOrDefault(g => g.Id == group_id);

            //Если все существует
            if (user != null && requesterUser != null && group != null)
            {
                var request = _context.PostPermissionRequests
                              .Include(ppr => ppr.User)
                              .Include(ppr => ppr.Group)
                              .FirstOrDefault(ppr => ppr.Group.Id == group_id && ppr.User.Username == requesterUsername);


                //Если такой запрос существует, то принимаем либо отвергаем запрос
                if (request != null)
                {
                    var accepted = model.Accepted;

                    if (accepted)
                    {
                        var postPermission = new PostPermission
                        {
                            User  = requesterUser,
                            Group = group
                        };
                        _context.PostPermissions.Add(postPermission);
                        _context.SaveChanges();
                    }

                    //Удаляем запрос
                    _context.PostPermissionRequests.Remove(request);
                    _context.SaveChanges();
                }
                else
                {
                    Unauthorized();
                }

                return(Ok());
            }
            else
            {
                return(Unauthorized());
            }
        }