Created
May 9, 2021 23:24
-
-
Save seccomiro/80e7598031b91d59c61c9c6c669a463f to your computer and use it in GitHub Desktop.
AdonisJs v5 Authentication snippets
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
... | |
<ul class="navbar-nav"> | |
@if(auth.isLoggedIn) | |
<li class="nav-item dropdown"> | |
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false"> | |
{{ auth.user?.name }} | |
</a> | |
<ul class="dropdown-menu" aria-labelledby="navbarDropdown"> | |
<li><a class="dropdown-item" href="{{ route('auth.logout') }}">Sair</a></li> | |
</ul> | |
</li> | |
@else | |
<li class="nav-item"> | |
<a class="nav-link" href="{{ route('auth.login') }}">Login</a> | |
</li> | |
<li class="nav-item"> | |
<a class="nav-link" href="{{ route('auth.register') }}">Registrar</a> | |
</li> | |
@endif | |
</ul> | |
... |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' | |
import User from 'App/Models/User' | |
export default class AuthController { | |
public async register({ view }: HttpContextContract) { | |
return view.render('auth/register') | |
} | |
public async store({ request, response, auth, session }: HttpContextContract) { | |
const data = request.only(['name', 'email', 'password']) | |
try { | |
const user = await User.create(data) | |
await auth.login(user, true) | |
} catch (error) { | |
session.flash('errors', 'Erro no registro. Verifique suas informações.') | |
return response.redirect().toRoute('auth.register') | |
} | |
response.redirect().toRoute('root') | |
} | |
public async login({ view }: HttpContextContract) { | |
return view.render('auth/login') | |
} | |
public async verify({ request, response, auth }: HttpContextContract) { | |
const data = request.only(['email', 'password', 'remember']) | |
await auth.attempt(data.email, data.password, data.remember === 'true') | |
response.redirect().toRoute('root') | |
} | |
public async logout({ response, auth }: HttpContextContract) { | |
await auth.logout() | |
response.redirect().toRoute('root') | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@layout('layout/app') | |
@section('content') | |
@if(flashMessages.has('auth.errors')) | |
<div class="alert alert-danger">Login ou senha inválidos</div> | |
@endif | |
<div class="row d-flex justify-content-center"> | |
<div class="col-4"> | |
<main class="form-signin"> | |
<form action="{{ route('auth.verify') }}" method="post"> | |
<h1 class="h3 mb-3 fw-normal">Login</h1> | |
<div class="form-floating mb-1"> | |
<input type="email" class="form-control" name="email" id="email" placeholder="[email protected]" autofocus> | |
<label for="email">Email</label> | |
</div> | |
<div class="form-floating mb-1"> | |
<input type="password" class="form-control" name="password" id="password" placeholder="Senha"> | |
<label for="password">Senha</label> | |
</div> | |
<div class="checkbox mb-3"> | |
<label> | |
<input type="checkbox" name="remember" value="true"> Lembrar de mim | |
</label> | |
</div> | |
<button class="w-100 btn btn-lg btn-primary" type="submit">Login</button> | |
</form> | |
</main> | |
</div> | |
</div> | |
@endsection |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@layout('layout/app') | |
@section('content') | |
@if(flashMessages.has('errors')) | |
<div class="alert alert-danger">{{ flashMessages.get('errors') }}</div> | |
@endif | |
<div class="row d-flex justify-content-center"> | |
<div class="col-4"> | |
<main class="form-signin"> | |
<form action="{{ route('auth.store') }}" method="post"> | |
<h1 class="h3 mb-3 fw-normal">Registre-se</h1> | |
<div class="form-floating mb-1"> | |
<input type="text" class="form-control" name="name" id="name" placeholder="Nome" autofocus> | |
<label for="name">Nome</label> | |
</div> | |
<div class="form-floating mb-1"> | |
<input type="email" class="form-control" name="email" id="email" placeholder="[email protected]"> | |
<label for="email">Email</label> | |
</div> | |
<div class="form-floating mb-1"> | |
<input type="password" class="form-control" name="password" id="password" placeholder="Senha"> | |
<label for="password">Senha</label> | |
</div> | |
<button class="w-100 btn btn-lg btn-primary" type="submit">Registrar</button> | |
</form> | |
</main> | |
</div> | |
</div> | |
@endsection |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Route from '@ioc:Adonis/Core/Route' | |
Route.group(() => { | |
Route.resource('tasks', 'TasksController') | |
Route.get('/tasks/:id/done', 'TasksController.done').as('tasks.done') | |
}).middleware('auth') | |
Route.get('/register', 'AuthController.register').as('auth.register') | |
Route.post('/register', 'AuthController.store').as('auth.store') | |
Route.get('/login', 'AuthController.login').as('auth.login') | |
Route.post('/login', 'AuthController.verify').as('auth.verify') | |
Route.get('/logout', 'AuthController.logout').as('auth.logout') | |
Route.get('/', 'HomeController.index').as('root') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment