mirror of
https://github.com/BookStackApp/BookStack.git
synced 2026-02-08 19:06:06 +03:00
Enhancement to Discord Social Login #3319
Closed
opened 2026-02-05 06:21:35 +03:00 by OVERLORD
·
6 comments
No Branch/Tag Specified
development
further_theme_development
l10n_development
release
llm_only
vectors
v25-11
docker_env
drawio_rendering
user_permissions
ldap_host_failover
svg_image
prosemirror
captcha_example
fix/video-export
v25.12.3
v25.12.2
v25.12.1
v25.12
v25.11.6
v25.11.5
v25.11.4
v24.11.4
v25.11.3
v25.11.2
v25.11.1
v25.11
v25.07.3
v25.07.2
v25.07.1
v25.07
v25.05.2
v25.05.1
v25.05
v25.02.5
v25.02.4
v25.02.3
v25.02.2
v25.02.1
v25.02
v24.12.1
v24.12
v24.10.3
v24.10.2
v24.10.1
v24.10
v24.05.4
v24.05.3
v24.05.2
v24.05.1
v24.05
v24.02.3
v24.02.2
v24.02.1
v24.02
v23.12.3
v23.12.2
v23.12.1
v23.12
v23.10.4
v23.10.3
v23.10.2
v23.10.1
v23.10
v23.08.3
v23.08.2
v23.08.1
v23.08
v23.06.2
v23.06.1
v23.06
v23.05.2
v23.05.1
v23.05
v23.02.3
v23.02.2
v23.02.1
v23.02
v23.01.1
v23.01
v22.11.1
v22.11
v22.10.2
v22.10.1
v22.10
v22.09.1
v22.09
v22.07.3
v22.07.2
v22.07.1
v22.07
v22.06.2
v22.06.1
v22.06
v22.04.2
v22.04.1
v22.04
v22.03.1
v22.03
v22.02.3
v22.02.2
v22.02.1
v22.02
v21.12.5
v21.12.4
v21.12.3
v21.12.2
v21.12.1
v21.12
v21.11.3
v21.11.2
v21.11.1
v21.11
v21.10.3
v21.10.2
v21.10.1
v21.10
v21.08.6
v21.08.5
v21.08.4
v21.08.3
v21.08.2
v21.08.1
v21.08
v21.05.4
v21.05.3
v21.05.2
v21.05.1
v21.05
v21.04.6
v21.04.5
v21.04.4
v21.04.3
v21.04.2
v21.04.1
v21.04
v0.31.8
v0.31.7
v0.31.6
v0.31.5
v0.31.4
v0.31.3
v0.31.2
v0.31.1
v0.31.0
v0.30.7
v0.30.6
v0.30.5
v0.30.4
v0.30.3
v0.30.2
v0.30.1
v0.30.0
v0.29.3
v0.29.2
v0.29.1
v0.29.0
v0.28.3
v0.28.2
v0.28.1
v0.28.0
v0.27.5
v0.27.4
v0.27.3
v0.27.2
v0.27.1
v0.27
v0.26.4
v0.26.3
v0.26.2
v0.26.1
v0.26.0
v0.25.5
v0.25.4
v0.25.3
v0.25.2
v0.25.1
v0.25.0
v0.24.3
v0.24.2
v0.24.1
v0.24.0
v0.23.2
v0.23.1
v0.23.0
v0.22.0
v0.21.0
v0.20.3
v0.20.2
v0.20.1
v0.20.0
v0.19.0
v0.18.5
v0.18.4
v0.18.3
v0.18.2
v0.18.1
v0.18.0
v0.17.4
v0.17.3
v0.17.2
v0.17.1
v0.17.0
v0.16.3
v0.16.2
v0.16.1
v0.16.0
v0.15.3
v0.15.2
v0.15.1
v0.15.0
v0.14.3
v0.14.2
v0.14.1
v0.14.0
v0.13.1
v0.13.0
v0.12.2
v0.12.1
v0.12.0
v0.11.2
v0.11.1
v0.11.0
v0.10.0
v0.9.3
v0.9.2
v0.9.1
v0.9.0
v0.8.2
v0.8.1
v0.8.0
v0.7.6
v0.7.5
v0.7.4
v0.7.3
0.7.2
v.0.7.1
v0.7.0
v0.6.3
v0.6.2
v0.6.1
v0.6.0
v0.5.0
Labels
Clear labels
🎨 Design
📖 Docs Update
🐛 Bug
🐛 Bug
:cat2:🐈 Possible duplicate
💿 Database
☕ Open to discussion
💻 Front-End
🐕 Support
🚪 Authentication
🌍 Translations
🔌 API Task
🏭 Back-End
⛲ Upstream
🔨 Feature Request
🛠️ Enhancement
🛠️ Enhancement
🛠️ Enhancement
❤️ Happy feedback
🔒 Security
🔍 Pending Validation
💆 UX
📝 WYSIWYG Editor
🌔 Out of scope
🔩 API Request
:octocat: Admin/Meta
🖌️ View Customization
❓ Question
🚀 Priority
🛡️ Blocked
🚚 Export System
♿ A11y
🔧 Maintenance
> Markdown Editor
pull-request
Mirrored from GitHub Pull Request
No Label
🔨 Feature Request
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/BookStack#3319
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 @greenlighttec on GitHub (Nov 1, 2022).
Describe the feature you'd like
Right now when using Discord social login, the way DIscord works is that anyone with a Discord account (regardless if its for the server the app is created on) can login to the application that is allowing discord login. See example with internal Grafana having the same issue https://www.reddit.com/r/discordapp/comments/r7d24i/question_how_to_restrict_users_being/
I'd like the DISCORD_TEAM_ID option to be added to restrict the login to specific guilds that way forcing the users signing in to be a member of our server when trying to access the resources within Bookstack, especially as we may be hosting sensitive information.
Describe the benefits this would bring to existing BookStack users
Right now a private bookstack with Discord login is not private, anyone can login using any discord account and be granted the default permissions levels. With this new enhancement we can restrict those users to only be people who have joined the Discord server
Can the goal of this request already be achieved via other means?
Nope, slack login currently behaves the way we'd expect with a private App not allowing login from workspaces that do not have the app installed.
Have you searched for an existing open/closed issue?
How long have you been using BookStack?
6 months to 1 year
Additional context
No response
@ssddanbrown commented on GitHub (Nov 1, 2022):
Thanks for the suggestion @greenlighttec, but I'm not looking to increase the scope of our social auth options where possible, with extra logic and handling, which it looks like this would require.
If handy with PHP, our logical theme system allows creation of custom third part auth services. You could extend the default Discord classes and apply additional required.
If needed, we could add more generic theme events around the existing social login actions, but I'd ideally want a demand for that, from someone that understands what data is required at which points, before spending time on such additions.
@greenlighttec commented on GitHub (Nov 1, 2022):
@ssddanbrown unless I misunderstood something you're using the Socialite plugin from Laravel? They added the ability to include the specific guilds as part of the scopes so I do not believe it would require any logic changes, just including the "scopes" property with the Guilds as an array to the Socialitie Driver when you hand it off for Discord?
@ssddanbrown commented on GitHub (Nov 1, 2022):
@greenlighttec From my understanding, the addition of scopes would just allow later access to such guild information, it wouldn't limit the standard oauth flow to certain guild members. Feel free to refer me to any documentation though if there is the ability to limit via scopes.
@greenlighttec commented on GitHub (Nov 1, 2022):
Ok, after I created this issue I did a ton of research on it, it's not a straight path but Discord docs say to limit OAuth logins to a specific server you should be passing the guild ID of the server you want to require membership for in as the "team_id". I found a feature request on the Laravel Github repo for allowing the use of this functionality and they closed it as completed with a link to their wiki about how to use Scopes. I lost the relevant links as I'm at work now, but I can find them tonight and come back and paste them in.
@greenlighttec commented on GitHub (Nov 3, 2022):
Ok coming back to this definitely looks like I crossed some articles in my initial research. I did find https://github.com/martinbean/socialite-discord-provider which specifically allows for Guild selection "natively" but it doesn't look like you're using this package.
@ssddanbrown commented on GitHub (Nov 3, 2022):
Thanks for providing more info.
Yeah, that package does provide a guild option but it's a parameter for the bot flow, not something for limiting user scope.
I'm going to therefore close this off since as explained above I don't want to increase scope of our auth systems.
For those looking to hack this in, you could likely do the following:
Providerclass as your base implementation.getUserByToken, to perform the additional call to get user guilds (If not already provided in theapi/users/@meresponse) and run a simple match, throwing an exception on failure.