plmercereau/platyplus

View on GitHub
src/constants/ability.js

Summary

Maintainability
A
1 hr
Test Coverage
import { AbilityBuilder } from 'casl'
 
function subjectName (item) {
if (!item || typeof item === 'string') return item
if (item.__typename && item.__typename.endsWith('Node')) return item.__typename.slice(0, -4).toLowerCase()
if (item.type) return item.type
return item
}
 
Function `defineAbilitiesFor` has 31 lines of code (exceeds 25 allowed). Consider refactoring.
export default function defineAbilitiesFor (user) {
return AbilityBuilder.define(
{ subjectName },
can => {
if (user && user.username) {
can(['route'], ['module', 'sandbox'])
can(['logout'], 'auth')
can(['create', 'read'], ['module', 'stage'])
can(['read'], ['module', 'stage'])
can(['edit'], ['module', 'stage'], {
id: null
})
can(['edit', 'create-child'], 'module', {
ownedBy: {
username: user.username
}
})
can('edit', 'stage', {
module:
Expected indentation of 10 spaces but found 12.
{
Expected indentation of 12 spaces but found 14.
ownedBy: {
username: user.username
}
Expected indentation of 10 spaces but found 12.
}
})
can(['update', 'delete'], 'Post', { username: user.username })
} else {
can(['login'], 'auth')
}
can(['route'], 'home')
}
)
}