mirror of
https://github.com/go-gitea/gitea.git
synced 2026-03-11 17:46:29 -05:00
Restricted Users cannot see Public Repos/Orgs... #15032
Closed
opened 2025-11-02 11:28:32 -06:00 by GiteaMirror
·
16 comments
No Branch/Tag Specified
main
release/v1.25
release/v1.24
release/v1.23
release/v1.22
release/v1.21
release/v1.20
release/v1.19
release/v1.18
release/v1.17
release/v1.16
release/v1.15
release/v1.14
release/v1.13
release/v1.12
release/v1.11
release/v1.10
release/v1.9
release/v1.8
v1.25.3
v1.25.2
v1.25.1
v1.25.0
v1.24.7
v1.25.0-rc0
v1.26.0-dev
v1.24.6
v1.24.5
v1.24.4
v1.24.3
v1.24.2
v1.24.1
v1.24.0
v1.23.8
v1.24.0-rc0
v1.25.0-dev
v1.23.7
v1.23.6
v1.23.5
v1.23.4
v1.23.3
v1.23.2
v1.23.1
v1.23.0
v1.23.0-rc0
v1.24.0-dev
v1.22.6
v1.22.5
v1.22.4
v1.22.3
v1.22.2
v1.22.1
v1.22.0
v1.23.0-dev
v1.22.0-rc1
v1.21.11
v1.22.0-rc0
v1.21.10
v1.21.9
v1.21.8
v1.21.7
v1.21.6
v1.21.5
v1.21.4
v1.21.3
v1.21.2
v1.20.6
v1.21.1
v1.21.0
v1.21.0-rc2
v1.21.0-rc1
v1.20.5
v1.22.0-dev
v1.21.0-rc0
v1.20.4
v1.20.3
v1.20.2
v1.20.1
v1.20.0
v1.19.4
v1.21.0-dev
v1.20.0-rc2
v1.20.0-rc1
v1.20.0-rc0
v1.19.3
v1.19.2
v1.19.1
v1.19.0
v1.19.0-rc1
v1.20.0-dev
v1.19.0-rc0
v1.18.5
v1.18.4
v1.18.3
v1.18.2
v1.18.1
v1.18.0
v1.17.4
v1.18.0-rc1
v1.19.0-dev
v1.18.0-rc0
v1.17.3
v1.17.2
v1.17.1
v1.17.0
v1.17.0-rc2
v1.16.9
v1.17.0-rc1
v1.18.0-dev
v1.16.8
v1.16.7
v1.16.6
v1.16.5
v1.16.4
v1.16.3
v1.16.2
v1.16.1
v1.16.0
v1.15.11
v1.17.0-dev
v1.16.0-rc1
v1.15.10
v1.15.9
v1.15.8
v1.15.7
v1.15.6
v1.15.5
v1.15.4
v1.15.3
v1.15.2
v1.15.1
v1.14.7
v1.15.0
v1.15.0-rc3
v1.14.6
v1.15.0-rc2
v1.14.5
v1.16.0-dev
v1.15.0-rc1
v1.14.4
v1.14.3
v1.14.2
v1.14.1
v1.14.0
v1.13.7
v1.14.0-rc2
v1.13.6
v1.13.5
v1.14.0-rc1
v1.15.0-dev
v1.13.4
v1.13.3
v1.13.2
v1.13.1
v1.13.0
v1.12.6
v1.13.0-rc2
v1.14.0-dev
v1.13.0-rc1
v1.12.5
v1.12.4
v1.12.3
v1.12.2
v1.12.1
v1.11.8
v1.12.0
v1.11.7
v1.12.0-rc2
v1.11.6
v1.12.0-rc1
v1.13.0-dev
v1.11.5
v1.11.4
v1.11.3
v1.10.6
v1.12.0-dev
v1.11.2
v1.10.5
v1.11.1
v1.10.4
v1.11.0
v1.11.0-rc2
v1.10.3
v1.11.0-rc1
v1.10.2
v1.10.1
v1.10.0
v1.9.6
v1.9.5
v1.10.0-rc2
v1.11.0-dev
v1.10.0-rc1
v1.9.4
v1.9.3
v1.9.2
v1.9.1
v1.9.0
v1.9.0-rc2
v1.10.0-dev
v1.9.0-rc1
v1.8.3
v1.8.2
v1.8.1
v1.8.0
v1.8.0-rc3
v1.7.6
v1.8.0-rc2
v1.7.5
v1.8.0-rc1
v1.9.0-dev
v1.7.4
v1.7.3
v1.7.2
v1.7.1
v1.7.0
v1.7.0-rc3
v1.6.4
v1.7.0-rc2
v1.6.3
v1.7.0-rc1
v1.7.0-dev
v1.6.2
v1.6.1
v1.6.0
v1.6.0-rc2
v1.5.3
v1.6.0-rc1
v1.6.0-dev
v1.5.2
v1.5.1
v1.5.0
v1.5.0-rc2
v1.5.0-rc1
v1.5.0-dev
v1.4.3
v1.4.2
v1.4.1
v1.4.0
v1.4.0-rc3
v1.4.0-rc2
v1.3.3
v1.4.0-rc1
v1.3.2
v1.3.1
v1.3.0
v1.3.0-rc2
v1.3.0-rc1
v1.2.3
v1.2.2
v1.2.1
v1.2.0
v1.2.0-rc3
v1.2.0-rc2
v1.1.4
v1.2.0-rc1
v1.1.3
v1.1.2
v1.1.1
v1.1.0
v1.0.2
v1.0.1
v1.0.0
v0.9.99
Labels
Clear labels
$20
$250
$50
$500
backport/done
💎 Bounty
docs-update-needed
good first issue
hacktoberfest
issue/bounty
issue/confirmed
issue/critical
issue/duplicate
issue/needs-feedback
issue/not-a-bug
issue/regression
issue/stale
issue/workaround
lgtm/need 2
modifies/api
modifies/translation
outdated/backport/v1.18
outdated/theme/markdown
outdated/theme/timetracker
performance/bigrepo
performance/cpu
performance/memory
performance/speed
pr/breaking
proposal/accepted
proposal/rejected
pr/wip
pull-request
reviewed/wontfix
💰 Rewarded
skip-changelog
status/blocked
topic/accessibility
topic/api
topic/authentication
topic/build
topic/code-linting
topic/commit-signing
topic/content-rendering
topic/deployment
topic/distribution
topic/federation
topic/gitea-actions
topic/issues
topic/lfs
topic/mobile
topic/moderation
topic/packages
topic/pr
topic/projects
topic/repo
topic/repo-migration
topic/security
topic/theme
topic/ui
topic/ui-interaction
topic/ux
topic/webhooks
topic/wiki
type/bug
type/deprecation
type/docs
type/enhancement
type/feature
type/miscellaneous
type/proposal
type/question
type/refactoring
type/summary
type/testing
type/upstream
Mirrored from GitHub Pull Request
No Label
type/bug
Milestone
No items
No Milestone
Projects
Clear projects
No project
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/gitea#15032
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @meln5674 on GitHub (Oct 17, 2025).
Description
...unless they use a super obscure cyber intrusion technique: Logging out.
This is tremendously silly. This feels like a "unstoppable force vs immovable object" problem, these two concepts are mutually contradictory.
Gitea Version
1.24.6
Can you reproduce the bug on the Gitea demo site?
Yes
Log Gist
No response
Screenshots
No response
Git Version
No response
Operating System
No response
How are you running Gitea?
N/A
Database
None
@wxiaoguang commented on GitHub (Oct 17, 2025):
Usually "restricted user" is used with other options like "require sign-in".
If you don't need it, then don't set it.
@meln5674 commented on GitHub (Oct 17, 2025):
Yes, however, I do need to restrict some users, but public repos are intended to be just that: public. I could make same argument, i.e. "If you don't want restricted users to see your repo, make it limited".
@wxiaoguang commented on GitHub (Oct 18, 2025):
However, there are are a lot of "options" or "methods" to "restrict" users. I could also argue that "if you want to restrict some users, use a proper approach".
So, the question is: what's your requirement? How to "restrict" or "limit"?
@meln5674 commented on GitHub (Oct 18, 2025):
I run a multi-tenant Gitea instance that is only accessible internally. There is a desire to host a second instance which is externally accessible, which hosts repos that are publicly accessible, as well as those that are private to both internal users and a limited handful external users. The desire is for there to be repos that are both publicly accessible, those which require explicitly adding users. The restricted user feature was desirable because it enabled us to create repos which explicitly require adding external users, while being globally accessible to internal users. Making external users restricted would also be defense-in-depth for a repo accidentally being marked as limited instead of private.
Obviously, I can just not use the feature, and use some other approach like requiring explicitly adding all users for private repos, and disallow limited repos, or maybe running a third instance for these special repos, or using other software entirely.
My point in opening this issue is that the behavior is surprising and unintuitive, and will provides additional headaches to users who we will then have to explain that the tool that we're using won't let them see certain content if they are logged in, which doesn't exactly reflect well on either us or Gitea for that matter, which doesn't feel great since I generally prefer to support and give exposure to well-maintained FOSS projects if I can.
If the restricted user feature is only sensible to be used when public repos are disallowed, I would expect it to only be usable when that's the case, or for there to at least be some sort of UI element in the user creation/configuration page that says "this doesn't do what you think it does, see this FAQ link" if public repos are enabled. Everyone I have shown this to (about a dozen people so far) within my org has said something to the effect of "Really? Is that a bug?"
@wxiaoguang commented on GitHub (Oct 18, 2025):
Not quite sure how many repos you need "external users" to access.
Maybe the new feature like Public Access could work better for your case?
And yes, I agree that there are design problems in the "restricted" user feature, there are still other discussions about it (for example: https://github.com/go-gitea/gitea/pull/35550#issuecomment-3357082925)
So as "open-source" and "crowd-contributed", many features were written without careful design. And I am not the author of "restricted user" feature, so I have no knowledge about its history.
Since I am maintaining the code, I think I need to figure out all use cases before making changes to it, to avoid introduce more design problems.
Thank you very much for the details!
@wxiaoguang commented on GitHub (Oct 18, 2025):
The "restricted user" feature is from #6274 (also cc @mnsh @lafriks @6543), maybe the authors and reviewers can have more thoughts about it, and let's see how to improve it.
@wxiaoguang commented on GitHub (Oct 18, 2025):
Although I haven't got enough background knowledge, I think if we'd like to break the legacy behavior, maybe we can do this:
Make restricted users can access public repositories #35693
Reviewing & testing are welcome.
If you can build your own binary/instance, feel free to try and report problems if there is any. Thank you.
@wxiaoguang commented on GitHub (Oct 18, 2025):
After reading more code and documents .... I found that it is a designed behavior , also included in document, and tests https://docs.gitea.com/help/faq?_highlight=restric#restricted-users
TBH, I am not sure whether we should change the behavior, although the new behavior (restricted users can see public repos) also look better to me .
So in the end, I think either:
@lunny commented on GitHub (Oct 18, 2025):
Public repositories in login required mode could be think as some kind of internal repositories. So that, maybe the restrict's definition is different between login required and no login required modes. That means restricted user can visit public repos in non login required mode but cannot visit public repositories in login required mode. Then I think it will be more compatible as the previous behavior.
@wxiaoguang commented on GitHub (Oct 18, 2025):
That's also my worry https://github.com/go-gitea/gitea/issues/35690#issuecomment-3416523177
Maybe it's even better to disable the "restricted user" option when require-sign-in=false, or make these two work together for various different cases.
At the moment, these two options just cause unclear edge cases.
@meln5674 commented on GitHub (Oct 18, 2025):
I don't think public repositories even make sense when sign-in is required. The point of a public repository is that you can see it without logging in, would it not make more sense to just have a feature to disallow public repos for that case? I think the current levels of public/limited/private cover the spectrum of use cases well, but maybe admins should be able to enable them selectively. Who knows, maybe there's a valid use case for disabling private repos? Restricted users then become a special case of user where limited actually means private, which is useful for third-parties, which is exactly the use case outlined in the FAQ.
@wxiaoguang commented on GitHub (Oct 18, 2025):
At the moment, I can see 2 cases:
I think my PR #35693 should have addressed these two use cases, and "make these two work together for various different cases" properly.
@lafriks commented on GitHub (Oct 18, 2025):
So yes, I blocked because in mode when loggin required mode is set to true limited/guest users should not see public repos, only ones that they have added rights to access
@lafriks commented on GitHub (Oct 18, 2025):
I think I blocked PR before code was changed to cover both cases, I agree that in mode when logged out can see more than logged in user makes not much sense
@wxiaoguang commented on GitHub (Oct 19, 2025):
Yes, old PR is a quick patch, and test fails. After reading more code and document, I fixed the code and test with proper approach.
@wxiaoguang commented on GitHub (Oct 22, 2025):
@meln5674 1.25 nightly is ready (and it will be 1.25.0 soon), it contains the fix: