31 lines
		
	
	
		
			No EOL
		
	
	
		
			832 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			No EOL
		
	
	
		
			832 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import type { HttpContext } from '@adonisjs/core/http'
 | |
| import type { NextFn } from '@adonisjs/core/types/http'
 | |
| import type { Authenticators } from '@adonisjs/auth/types'
 | |
| 
 | |
| /**
 | |
|  * Guest middleware is used to deny access to routes that should
 | |
|  * be accessed by unauthenticated users.
 | |
|  *
 | |
|  * For example, the login page should not be accessible if the user
 | |
|  * is already logged-in
 | |
|  */
 | |
| export default class GuestMiddleware {
 | |
|   /**
 | |
|    * The URL to redirect to when user is logged-in
 | |
|    */
 | |
|   redirectTo = '/'
 | |
| 
 | |
|   async handle(
 | |
|     ctx: HttpContext,
 | |
|     next: NextFn,
 | |
|     options: { guards?: (keyof Authenticators)[] } = {}
 | |
|   ) {
 | |
|     for (let guard of options.guards || [ctx.auth.defaultGuard]) {
 | |
|       if (await ctx.auth.use(guard).check()) {
 | |
|         return ctx.response.redirect(this.redirectTo, true)
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     return next()
 | |
|   }
 | |
| } | 
