Skip to content
Snippets Groups Projects
bouncer.ts 1.96 KiB
Newer Older
Thomas SAUVAGE's avatar
Thomas SAUVAGE committed
/**
 * Contract source: https://git.io/Jte3T
 *
 * Feel free to let us know via PR, if you find something broken in this config
 * file.
 */

import Bouncer from '@ioc:Adonis/Addons/Bouncer'
Thomas SAUVAGE's avatar
Thomas SAUVAGE committed
import User from 'App/Models/User'
Thomas SAUVAGE's avatar
Thomas SAUVAGE committed

/*
|--------------------------------------------------------------------------
| Bouncer Actions
|--------------------------------------------------------------------------
|
| Actions allows you to separate your application business logic from the
| authorization logic. Feel free to make use of policies when you find
| yourself creating too many actions
|
| You can define an action using the `.define` method on the Bouncer object
| as shown in the following example
|
| ```
| 	Bouncer.define('deletePost', (user: User, post: Post) => {
|			return post.user_id === user.id
| 	})
| ```
|
|****************************************************************
| NOTE: Always export the "actions" const from this file
|****************************************************************
*/
Thomas SAUVAGE's avatar
Thomas SAUVAGE committed
export const { actions } = Bouncer.define('isAdmin', (user: User) => {
Thomas SAUVAGE's avatar
Thomas SAUVAGE committed
  return user.isAdmin ? true : Bouncer.deny('This can only be done by an admin')
})

/*
|--------------------------------------------------------------------------
| Bouncer Policies
|--------------------------------------------------------------------------
|
| Policies are self contained actions for a given resource. For example: You
| can create a policy for a "User" resource, one policy for a "Post" resource
| and so on.
|
| The "registerPolicies" accepts a unique policy name and a function to lazy
| import the policy
|
| ```
| 	Bouncer.registerPolicies({
|			UserPolicy: () => import('App/Policies/User'),
| 		PostPolicy: () => import('App/Policies/Post')
| 	})
| ```
|
|****************************************************************
| NOTE: Always export the "policies" const from this file
|****************************************************************
*/
export const { policies } = Bouncer.registerPolicies({})