diff --git a/aurweb/routers/pkgbase.py b/aurweb/routers/pkgbase.py index 6cd4199d..1bca5ea3 100644 --- a/aurweb/routers/pkgbase.py +++ b/aurweb/routers/pkgbase.py @@ -96,6 +96,12 @@ async def pkgbase_keywords(request: Request, name: str, keywords: str = Form(default=str())): pkgbase = get_pkg_or_base(name, PackageBase) + approved = [pkgbase.Maintainer] + [c.User for c in pkgbase.comaintainers] + has_cred = creds.has_credential(request.user, creds.PKGBASE_SET_KEYWORDS, + approved=approved) + if not has_cred: + return Response(status_code=HTTPStatus.UNAUTHORIZED) + # Lowercase all keywords. Our database table is case insensitive, # and providing CI duplicates of keywords is erroneous. keywords = set(k.lower() for k in keywords.split()) diff --git a/templates/partials/packages/details.html b/templates/partials/packages/details.html index 771b311d..ca7159be 100644 --- a/templates/partials/packages/details.html +++ b/templates/partials/packages/details.html @@ -33,10 +33,10 @@ {% endif %} - {% if pkgbase.keywords.count() or request.user.has_credential(creds.PKGBASE_SET_KEYWORDS, approved=[pkgbase.Maintainer]) %} + {% if pkgbase.keywords.count() or request.user.has_credential(creds.PKGBASE_SET_KEYWORDS, approved=[pkgbase.Maintainer] + comaintainers) %} {{ "Keywords" | tr }}: - {% if request.user.has_credential(creds.PKGBASE_SET_KEYWORDS, approved=[pkgbase.Maintainer]) %} + {% if request.user.has_credential(creds.PKGBASE_SET_KEYWORDS, approved=[pkgbase.Maintainer] + comaintainers) %}