예제 #1
0
        protected override async Task <PermissionResult> CanUpdateAsync(Organization original, Delta <NewOrganization> changes)
        {
            var changed = changes.GetEntity();

            if (!await IsOrganizationNameAvailableInternalAsync(changed.Name))
            {
                return(PermissionResult.DenyWithMessage("A organization with this name already exists."));
            }

            return(await base.CanUpdateAsync(original, changes));
        }
예제 #2
0
        protected override async Task <PermissionResult> CanUpdateAsync(Project original, Delta <UpdateProject> changes)
        {
            var changed = changes.GetEntity();

            if (changes.ContainsChangedProperty(p => p.Name) && !await IsProjectNameAvailableInternalAsync(original.OrganizationId, changed.Name))
            {
                return(PermissionResult.DenyWithMessage("A project with this name already exists."));
            }

            return(await base.CanUpdateAsync(original, changes));
        }
        protected virtual PermissionResult CanUpdate(TModel original, Delta <TUpdateModel> changes)
        {
            var orgModel = original as IOwnedByOrganization;

            if (orgModel != null && !IsInOrganization(orgModel.OrganizationId))
            {
                return(PermissionResult.DenyWithMessage("Invalid organization id specified."));
            }

            // TODO: The changes might actually change the organization id.

            return(PermissionResult.Allow);
        }
        protected override async Task <PermissionResult> CanDeleteAsync(User value)
        {
            if (value.OrganizationIds.Count > 0)
            {
                return(PermissionResult.DenyWithMessage("Please delete or leave any organizations before deleting your account."));
            }

            if (!User.IsInRole(AuthorizationRoles.GlobalAdmin) && value.Id != CurrentUser.Id)
            {
                return(PermissionResult.Deny);
            }

            return(await base.CanDeleteAsync(value));
        }
        protected virtual async Task <PermissionResult> CanUpdateAsync(TModel original, Delta <TUpdateModel> changes)
        {
            if (original is IOwnedByOrganization orgModel && !CanAccessOrganization(orgModel.OrganizationId))
            {
                return(PermissionResult.DenyWithMessage("Invalid organization id specified."));
            }

            if (changes.GetChangedPropertyNames().Contains("OrganizationId"))
            {
                return(PermissionResult.DenyWithMessage("OrganizationId cannot be modified."));
            }

            return(PermissionResult.Allow);
        }
예제 #6
0
        protected override async Task <PermissionResult> CanDeleteAsync(Organization value)
        {
            if (!String.IsNullOrEmpty(value.StripeCustomerId) && !User.IsInRole(AuthorizationRoles.GlobalAdmin))
            {
                return(PermissionResult.DenyWithMessage("An organization cannot be deleted if it has a subscription.", value.Id));
            }

            var projects = (await _projectRepository.GetByOrganizationIdAsync(value.Id)).Documents.ToList();

            if (!User.IsInRole(AuthorizationRoles.GlobalAdmin) && projects.Any())
            {
                return(PermissionResult.DenyWithMessage("An organization cannot be deleted if it contains any projects.", value.Id));
            }

            return(await base.CanDeleteAsync(value));
        }
        protected override PermissionResult CanDelete(Organization value)
        {
            if (!String.IsNullOrEmpty(value.StripeCustomerId) && User.IsInRole(AuthorizationRoles.GlobalAdmin))
            {
                return(PermissionResult.DenyWithMessage("An organization cannot be deleted if it has a subscription.", value.Id));
            }

            List <Project> projects = _projectRepository.GetByOrganizationId(value.Id).ToList();

            if (!User.IsInRole(AuthorizationRoles.GlobalAdmin) && projects.Any())
            {
                return(PermissionResult.DenyWithMessage("An organization cannot be deleted if it contains any projects.", value.Id));
            }

            return(base.CanDelete(value));
        }
        protected virtual async Task <PermissionResult> CanAddAsync(TModel value)
        {
            var orgModel = value as IOwnedByOrganization;

            if (_isOrganization || orgModel == null)
            {
                return(PermissionResult.Allow);
            }

            if (!CanAccessOrganization(orgModel.OrganizationId))
            {
                return(PermissionResult.DenyWithMessage("Invalid organization id specified."));
            }

            return(PermissionResult.Allow);
        }
        protected virtual PermissionResult CanUpdate(TModel original, Delta <TUpdateModel> changes)
        {
            var orgModel = original as IOwnedByOrganization;

            if (orgModel != null && !IsInOrganization(orgModel.OrganizationId))
            {
                return(PermissionResult.DenyWithMessage("Invalid organization id specified."));
            }

            if (changes.GetChangedPropertyNames().Contains("OrganizationId"))
            {
                return(PermissionResult.DenyWithMessage("OrganizationId cannot be modified."));
            }

            return(PermissionResult.Allow);
        }
예제 #10
0
        protected override PermissionResult CanAdd(Project value)
        {
            if (String.IsNullOrEmpty(value.Name))
            {
                return(PermissionResult.DenyWithMessage("Project name is required."));
            }

            if (!IsProjectNameAvailableInternal(value.OrganizationId, value.Name))
            {
                return(PermissionResult.DenyWithMessage("A project with this name already exists."));
            }

            if (!_billingManager.CanAddProject(value))
            {
                return(PermissionResult.DenyWithPlanLimitReached("Please upgrade your plan to add additional projects."));
            }

            return(base.CanAdd(value));
        }
예제 #11
0
        protected override async Task <PermissionResult> CanAddAsync(Organization value)
        {
            if (String.IsNullOrEmpty(value.Name))
            {
                return(PermissionResult.DenyWithMessage("Organization name is required."));
            }

            if (!await IsOrganizationNameAvailableInternalAsync(value.Name))
            {
                return(PermissionResult.DenyWithMessage("A organization with this name already exists."));
            }

            if (!await _billingManager.CanAddOrganizationAsync(CurrentUser))
            {
                return(PermissionResult.DenyWithPlanLimitReached("Please upgrade your plan to add an additional organization."));
            }

            return(await base.CanAddAsync(value));
        }
        protected override PermissionResult CanAdd(Organization value)
        {
            if (String.IsNullOrEmpty(value.Name))
            {
                return(PermissionResult.DenyWithMessage("Organization name is required."));
            }

            if (!IsOrganizationNameAvailableInternal(value.Name))
            {
                return(PermissionResult.DenyWithMessage("A organization with this name already exists."));
            }

            if (!_billingManager.CanAddOrganization(ExceptionlessUser))
            {
                return(PermissionResult.DenyWithPlanLimitReached("Please upgrade your plan to add an additional organization."));
            }

            return(base.CanAdd(value));
        }