Support for Google Account required authentication model
Opened this issue · 0 comments
Currently, Jolly Roger has its own independent authentication system and set of accounts. In contrast, Ange Management currently requires that all team members have a Google Account. This enables the following:
- Authentication by checking membership in the group. Unfortunately, there's no direct way I'm aware of to check membership in a regular consumer Google Group. Instead, we check for access to the hunt's drive folder, which is shared with the Google Group. To avoid having to request full Drive access, which is a scary OAuth scope, we only ask for per-file access and we use the Drive picker and ask users to select this year's hunt folder, which gives us access to that specific folder. This was implemented a few years ago - maybe there is a better way now. But it works.
- No need to share spreadsheets with all users and risk running into limits. You can just share directly with the group, and users will show up as themselves (not anonymous) in the sheet.
- No need for an email system since all of the existing emails relate to account creation and maintenance and being added to hunts, AFAICT.
FWIW, we also use a service account to create the sheets and perform other Google operations. IIRC the current system asks for a dedicated actual user account for this purpose. Service accounts feel better suited to this purpose.
Meteor has a built-in Google Account integration which might be useful (our current system is DIY). At a high level, I imagine offering this as a configurable option that replaces the existing log-in system with a "Sign in with Google" option; after signing in, we create a user entry in JR including any necessary credentials for authenticated requests. Would have to figure out things like the initial user creation flow for the admin, hunt creation creating folders and doing the per-hunt auth dance as needed.
I'm planning to take a look at this myself but concerns, thoughts and ideas would be welcome! I'd like to upstream this to avoid drift, and I think that Palindrome might find at least parts of this useful.