public async Task <ActionResponse> EditFeatureRights(int featureId, int[] featureRights)
        {
            try
            {
                featureRights = featureRights ?? new int[0];

                await _securityContext.EditFeatureRights(featureId,
                                                         featureRights.Select(l => l).ToArray());

                return(new ActionResponse
                {
                    Status = ActionStatus.Success
                });
            }
            catch (SecurityDbException e)
            {
                return(new ActionResponse
                {
                    Status = ActionStatus.Warning,
                    Message = PrettyExceptionHelper.GetMessage(e)
                });
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(new ActionResponse
                {
                    Status = ActionStatus.Error,
                    Message = "Something went wrong!"
                });
            }
        }
Beispiel #2
0
        public async Task <ActionResponse> EditUserRightsByNames(string userId, string[] roles, string[] functions, string[] accessedRights,
                                                                 string[] deniedRights)
        {
            try
            {
                if (string.IsNullOrEmpty(userId))
                {
                    return(new ActionResponse
                    {
                        Message = "Wrong id",
                        Status = ActionStatus.Warning
                    });
                }

                roles          = roles ?? new string[0];
                functions      = functions ?? new string[0];
                accessedRights = accessedRights ?? new string[0];
                deniedRights   = deniedRights ?? new string[0];

                if (accessedRights.Intersect(deniedRights).Any())
                {
                    return(new ActionResponse
                    {
                        Status = ActionStatus.Warning,
                        Message = "Accessed and denied must not have same Rights"
                    });
                }

                await _securityContext.EditUserRightsByNames(userId, roles,
                                                             functions,
                                                             accessedRights,
                                                             deniedRights);

                return(new ActionResponse
                {
                    Status = ActionStatus.Success
                });
            }
            catch (SecurityDbException e)
            {
                return(new ActionResponse
                {
                    Status = ActionStatus.Warning,
                    Message = PrettyExceptionHelper.GetMessage(e)
                });
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(new ActionResponse
                {
                    Status = ActionStatus.Error,
                    Message = "Something went wrong!"
                });
            }
        }
Beispiel #3
0
        public async Task <UserRightsResponse> GetUserRights(string userId)
        {
            try
            {
                if (string.IsNullOrEmpty(userId))
                {
                    return(new UserRightsResponse
                    {
                        Status = ActionStatus.Warning,
                        Message = "BadRequest"
                    });
                }
                if (userId.Trim().Length > 100)
                {
                    return(new UserRightsResponse
                    {
                        Message = "UserId longer then 100",
                        Status = ActionStatus.Warning
                    });
                }

                return(new UserRightsResponse
                {
                    UserRights = _mapper.Map <UserRights>(await
                                                          _securityContext.GetUserRights(userId)),
                    Status = ActionStatus.Success
                });
            }
            catch (SecurityDbException e)
            {
                return(new UserRightsResponse
                {
                    Status = ActionStatus.Warning,
                    Message = PrettyExceptionHelper.GetMessage(e)
                });
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(new UserRightsResponse
                {
                    Status = ActionStatus.Error,
                    Message = "Something went wrong!"
                });
            }
        }
Beispiel #4
0
        public async Task <AccessResponse> CheckAccess(CheckAccessRequest accessRequest)
        {
            try
            {
                var validationResult = await _accessRequestValidator.ValidateAsync(accessRequest);

                if (!validationResult.IsValid)
                {
                    var response = ValidationResponseHelper.GetResponse(validationResult);
                    return(new AccessResponse
                    {
                        Status = response.Status,
                        Message = response.Message
                    });
                }


                var result = await _securityContext.CheckAccess(accessRequest.UserId, accessRequest.AccessRightNames);

                return(new AccessResponse
                {
                    Status = ActionStatus.Success,
                    AccessRightNames = result
                });
            }
            catch (SecurityDbException e)
            {
                return(new AccessResponse
                {
                    Status = ActionStatus.Warning,
                    Message = PrettyExceptionHelper.GetMessage(e)
                });
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(new AccessResponse
                {
                    Status = ActionStatus.Error,
                    Message = "Something went wrong!"
                });
            }
        }
Beispiel #5
0
        public async Task <ActionResponse> EditRole(int roleId, int[] accessRightsIds, int[] deniedRightsIds, int[] functionIds)
        {
            try
            {
                accessRightsIds = accessRightsIds ?? new int[0];
                deniedRightsIds = deniedRightsIds ?? new int[0];

                if (accessRightsIds.Intersect(deniedRightsIds).Any())
                {
                    return(new ActionResponse
                    {
                        Status = ActionStatus.Warning,
                        Message = "Accessed and denied must not have same Rights"
                    });
                }

                await _securityContext.EditRoleFunctions(roleId, functionIds);

                await _securityContext.EditRoleRights(roleId, accessRightsIds, deniedRightsIds);

                return(new ActionResponse
                {
                    Status = ActionStatus.Success
                });
            }
            catch (SecurityDbException e)
            {
                return(new ActionResponse
                {
                    Status = ActionStatus.Warning,
                    Message = PrettyExceptionHelper.GetMessage(e)
                });
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(new ActionResponse
                {
                    Status = ActionStatus.Error,
                    Message = "Something went wrong!"
                });
            }
        }
Beispiel #6
0
        public async Task <AccessRightResponse> GetRights(int itemsPerPage, int pageNumber, string mask = null)
        {
            try
            {
                if (itemsPerPage < 1 || pageNumber < 1 || int.MaxValue / itemsPerPage < pageNumber || mask?.Trim().Length > 100)
                {
                    return(new AccessRightResponse
                    {
                        Status = ActionStatus.Warning,
                        Message = "BadRequest"
                    });
                }

                var rights = await
                             _securityContext.GetRights(itemsPerPage, pageNumber, mask?.Trim() ?? "");

                return(new AccessRightResponse
                {
                    AccessRights = _mapper.Map <AccessRight[]>(rights.Rights),
                    TotalCount = rights.TotalCount,
                    Status = ActionStatus.Success
                });
            }
            catch (SecurityDbException e)
            {
                return(new AccessRightResponse
                {
                    Status = ActionStatus.Warning,
                    Message = PrettyExceptionHelper.GetMessage(e)
                });
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(new AccessRightResponse
                {
                    Status = ActionStatus.Error,
                    Message = "Something went wrong!"
                });
            }
        }
        public async Task <ActionResponse> AddFeature(string featureName)
        {
            try
            {
                if (string.IsNullOrEmpty(featureName) || featureName.Trim().Length > 100)
                {
                    return(new AccessRightResponse
                    {
                        Message = "Name must be between 1 and 100 characters",
                        Status = ActionStatus.Warning
                    });
                }

                var id = await _securityContext.AddFeature(featureName);

                return(new ActionResponse
                {
                    Id = id,
                    Status = ActionStatus.Success
                });
            }
            catch (SecurityDbException e)
            {
                return(new ActionResponse
                {
                    Status = ActionStatus.Warning,
                    Message = PrettyExceptionHelper.GetMessage(e)
                });
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(new ActionResponse
                {
                    Status = ActionStatus.Error,
                    Message = "Something went wrong!"
                });
            }
        }
Beispiel #8
0
        public async Task <AccessRightResponse> AddRights(string[] rights)
        {
            try
            {
                if (rights.Any(l => string.IsNullOrEmpty(l) || l.Trim().Length > 100))
                {
                    return(new AccessRightResponse
                    {
                        Message = "Name must be between 1 and 100 characters",
                        Status = ActionStatus.Warning
                    });
                }

                return(new AccessRightResponse
                {
                    AccessRights = _mapper.Map <IEnumerable <AccessRight> >(
                        await _securityContext.AddRights(rights)).ToArray(),
                    Status = ActionStatus.Success
                });
            }
            catch (SecurityDbException e)
            {
                return(new AccessRightResponse
                {
                    Status = ActionStatus.Warning,
                    Message = PrettyExceptionHelper.GetMessage(e)
                });
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(new AccessRightResponse
                {
                    Status = ActionStatus.Error,
                    Message = "Something went wrong!"
                });
            }
        }
Beispiel #9
0
        public async Task <ActionResponse> UpdateUserInfo(UserInfo userInfo)
        {
            try
            {
                var validationResult = await _userRightsValidator.ValidateAsync(userInfo);

                if (!validationResult.IsValid)
                {
                    return(ValidationResponseHelper.GetResponse(validationResult));
                }


                await _securityContext.UpdateUser(_mapper.Map <UserInfoDb>(userInfo));

                return(new ActionResponse
                {
                    Status = ActionStatus.Success
                });
            }
            catch (SecurityDbException e)
            {
                return(new ActionResponse
                {
                    Status = ActionStatus.Warning,
                    Message = PrettyExceptionHelper.GetMessage(e)
                });
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(new ActionResponse
                {
                    Status = ActionStatus.Error,
                    Message = "Something went wrong!"
                });
            }
        }
Beispiel #10
0
        public async Task <ActionResponse> DeleteUserRights(string userId)
        {
            try
            {
                if (string.IsNullOrEmpty(userId))
                {
                    return(new ActionResponse
                    {
                        Message = "Nothing was deleted on empty id",
                        Status = ActionStatus.Warning
                    });
                }
                await _securityContext.DeleteUserRights(userId);

                return(new ActionResponse
                {
                    Status = ActionStatus.Success
                });
            }
            catch (SecurityDbException e)
            {
                return(new ActionResponse
                {
                    Status = ActionStatus.Warning,
                    Message = PrettyExceptionHelper.GetMessage(e)
                });
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(new ActionResponse
                {
                    Status = ActionStatus.Error,
                    Message = "Something went wrong!"
                });
            }
        }
        public async Task <ActionResponse> DeleteFeature(int featureId)
        {
            try
            {
                if (featureId == 0)
                {
                    return(new ActionResponse
                    {
                        Message = "Nothing was deleted on id = 0",
                        Status = ActionStatus.Warning
                    });
                }
                await _securityContext.DeleteFeature(featureId);

                return(new ActionResponse
                {
                    Status = ActionStatus.Success
                });
            }
            catch (SecurityDbException e)
            {
                return(new ActionResponse
                {
                    Status = ActionStatus.Warning,
                    Message = PrettyExceptionHelper.GetMessage(e)
                });
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(new ActionResponse
                {
                    Status = ActionStatus.Error,
                    Message = "Something went wrong!"
                });
            }
        }