What
Finish the #586 view: a logged-in user picks which standards they care about, and that selection is the default view across OpenCRE until they show all.
This is not a new catalog, not a private tenant, and not MyOpenCRE CSV-upload. Auth + persistence already exist. The saved list does not yet change CRE/search/explorer/GA pages.
Already shipped (#586)
- Google OIDC (
/rest/v1/login, /callback, /user, /logout)
users + user_resource_selection tables
GET/PUT /rest/v1/user/resources
- MyOpenCRE
ResourceSelector picker
- Server filter on
GET /rest/v1/standards only (?all=true bypass)
- Empty selection = show everything; OpenCRE always kept
- Two flags, both off by default:
CRE_ENABLE_LOGIN and CRE_ENABLE_MYOPENCRE
Chat login is separate: /rest/v1/completion is always @login_required. Production chat can already force Google login while these flags stay off.
The gap
apply_user_resource_filter runs only on /rest/v1/standards. The UI almost never consumes that list (the picker uses ?all=true). CRE pages load /id/{id} unfiltered. The old URL view (?applyFilters=true&filters=ASVS) is not hydrated from /user/resources. include_only= on the CRE API already exists and is unused by the frontend.
Child tickets
Added in follow-up comments / this project: https://github.com/orgs/OWASP/projects/60
Success
- Logged-in user with a non-empty selection sees only those standards (plus OpenCRE) on CRE/standard pages by default, with a visible “your view / Show all” control.
- Search and explorer respect the same view.
- Map Analysis dropdowns can be narrowed without losing a “all eligible” bypass (
?all=true).
- Anonymous and shareable
/cre/… URLs still show the full graph.
- Empty selection still means “show everything”.
Out of scope
Context
What
Finish the #586 view: a logged-in user picks which standards they care about, and that selection is the default view across OpenCRE until they show all.
This is not a new catalog, not a private tenant, and not MyOpenCRE CSV-upload. Auth + persistence already exist. The saved list does not yet change CRE/search/explorer/GA pages.
Already shipped (#586)
/rest/v1/login,/callback,/user,/logout)users+user_resource_selectiontablesGET/PUT /rest/v1/user/resourcesResourceSelectorpickerGET /rest/v1/standardsonly (?all=truebypass)CRE_ENABLE_LOGINandCRE_ENABLE_MYOPENCREChat login is separate:
/rest/v1/completionis always@login_required. Production chat can already force Google login while these flags stay off.The gap
apply_user_resource_filterruns only on/rest/v1/standards. The UI almost never consumes that list (the picker uses?all=true). CRE pages load/id/{id}unfiltered. The old URL view (?applyFilters=true&filters=ASVS) is not hydrated from/user/resources.include_only=on the CRE API already exists and is unused by the frontend.Child tickets
Added in follow-up comments / this project: https://github.com/orgs/OWASP/projects/60
Success
?all=true)./cre/…URLs still show the full graph.Out of scope
Context
docs/rfc/user-auth-myopencre.mdapplication/web/web_main.pyapply_user_resource_filterapplication/frontend/src/hooks/applyFilters.tsx