diff --git a/frontend/src/components/project/ProjectSettingsDropdown.vue b/frontend/src/components/project/ProjectSettingsDropdown.vue
index 7abfaa54f..4ce76144f 100644
--- a/frontend/src/components/project/ProjectSettingsDropdown.vue
+++ b/frontend/src/components/project/ProjectSettingsDropdown.vue
@@ -24,9 +24,16 @@
>
{{ $t('menu.edit') }}
+
+ {{ $t('menu.views') }}
+
{{ $t('misc.delete') }}
diff --git a/pkg/models/project_view_rights.go b/pkg/models/project_view_rights.go
index 6e222807e..7e071464d 100644
--- a/pkg/models/project_view_rights.go
+++ b/pkg/models/project_view_rights.go
@@ -22,21 +22,45 @@ import (
)
func (p *ProjectView) CanRead(s *xorm.Session, a web.Auth) (bool, int, error) {
+ filterID := getSavedFilterIDFromProjectID(p.ProjectID)
+ if filterID > 0 {
+ sf := &SavedFilter{ID: filterID}
+ return sf.CanRead(s, a)
+ }
+
pp := p.getProject()
return pp.CanRead(s, a)
}
func (p *ProjectView) CanDelete(s *xorm.Session, a web.Auth) (bool, error) {
+ filterID := getSavedFilterIDFromProjectID(p.ProjectID)
+ if filterID > 0 {
+ sf := &SavedFilter{ID: filterID}
+ return sf.CanDelete(s, a)
+ }
+
pp := p.getProject()
return pp.IsAdmin(s, a)
}
func (p *ProjectView) CanUpdate(s *xorm.Session, a web.Auth) (bool, error) {
+ filterID := getSavedFilterIDFromProjectID(p.ProjectID)
+ if filterID > 0 {
+ sf := &SavedFilter{ID: filterID}
+ return sf.CanUpdate(s, a)
+ }
+
pp := p.getProject()
return pp.IsAdmin(s, a)
}
func (p *ProjectView) CanCreate(s *xorm.Session, a web.Auth) (bool, error) {
+ filterID := getSavedFilterIDFromProjectID(p.ProjectID)
+ if filterID > 0 {
+ sf := &SavedFilter{ID: filterID}
+ return sf.CanUpdate(s, a)
+ }
+
pp := p.getProject()
return pp.IsAdmin(s, a)
}