Multiple Strategies for AshAuthentication

I am trying to migrate my current application from only allowing users to sign in with Google Auth, to also be able to create an account with username and password. I want people with just username and password to be able to optionally connect their google accounts in order to sync their calendars.

So I currently have a working setup for register_with_password and register_with_google but I’m a little unsure how I can add the option just to connect a users Google Calendar? Would I need to create another oauth strategy?

      # Current oauth2 for registering
      oauth2 :google do
        ...
        authorization_params(
          access_type: "offline",
          scope:
            "https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/calendar"
        )

        identity_resource(MyApp.Accounts.UserIdentity)
      end

  1. Do I need another oauth2 strategy that only needs the google calendar scope?
  2. How do I connect this to my Phoenix/Liveview app
  1. I don’t think you need another strategy for google calendar. Google uses centralised authentication for all its products.
  2. After the authentication is successfully, you should be able to access the logged in user via @current_user assign in liveview.

Hello! Thanks for the reply.

Maybe I could explain my problem better. In my case, I show the user a calendar. I’d want that calendar linked to multiple google calendar accounts. So in this case I’d want one user to have many google accounts connected.

Another thing that makes me think I need multiple strategies is that I’d want each account to be flexible and allow for different read/write permissions.