Skip to content

Instantly share code, notes, and snippets.

@maiquealmeida
Last active August 18, 2022 03:41
Show Gist options
  • Save maiquealmeida/418db68925d61277f625ed4289954773 to your computer and use it in GitHub Desktop.
Save maiquealmeida/418db68925d61277f625ed4289954773 to your computer and use it in GitHub Desktop.
AdonisJS: How to get separated auth for admin and user models

How to get separated auth for admin and user models

Let's say you have 2 models. App/Models/User and App/Models/Admin Inside your config/auth.js, you can create multiple authenticators for admin and user.

{
  user: {
    serializer: 'lucid',
    model: 'App/Models/User',
    scheme: 'session',
    uid: 'email',
    password: 'password'
  },
  admin: {
    serializer: 'lucid',
    model: 'App/Models/Admin',
    scheme: 'session',
    uid: 'email',
    password: 'password'
  }
}

And then to protect your routes, you can say.

Route.get(...).middleware('auth:admin')
Route.get(...).middleware('auth:user')

If inside your controllers, you want to know if user is an Admin or just a User, you can use the following code.

const Admin = use('App/Models/Admin')

if (auth.user instanceof Admin) {
  // user is admin
}
@Fabricio-Guima
Copy link

Olá Maique, eu tentei fazer uma separação entre admin's e usuários como vc exemplificou e não funcionou. O erro foi seguinte:

image

estou querendo proteger a rota get que pega todos os usuários, mas só quero dar acesso a essa rota pra quem for admin e não consigo obter êxito, minha configuração no arquivo "config/auth.js" está assim:

image

Será que eu colei o código no local certo ou preciso fazer mais alguma coisa? Se puder me dar uma luz eu agradeço, pois sou iniciante

@maiquealmeida
Copy link
Author

Olá Maique, eu tentei fazer uma separação entre admin's e usuários como vc exemplificou e não funcionou. O erro foi seguinte:

image

estou querendo proteger a rota get que pega todos os usuários, mas só quero dar acesso a essa rota pra quem for admin e não consigo obter êxito, minha configuração no arquivo "config/auth.js" está assim:

image

Será que eu colei o código no local certo ou preciso fazer mais alguma coisa? Se puder me dar uma luz eu agradeço, pois sou iniciante

Man, como está seu routes.js?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment