This repository was archived by the owner on Feb 11, 2023. It is now read-only.

Latest commit

History

32 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Drawbridge

This repo is no longer being maintained. Since Laravel now requires PHP 5.4, using Laravel allows you to use traits. The Entrust package already supports this and has a much bigger community. I recommend the use of it instead.

Roles and permissions for Laravel 4.

##Installation

Add searsaw/drawbridge as a requirement to your composer.json.

{
"require": {
"searsaw/drawbridge": "dev-master"
}
}

Update your application packages with composer update or install them with composer install. Then add the service provider to providers array in the app/config/app.php file.

'providers' => array(
'Illuminate\Foundation\Providers\ArtisanServiceProvider',
'Illuminate\Auth\AuthServiceProvider',
...
'Illuminate\Workbench\WorkbenchServiceProvider',
'Searsaw\Drawbridge\DrawbridgeServiceProvider'
),

##Getting Started

First, we need to export the migrations into the migrations directory so the tables for Drawbridge can be put into the database. Run the php artisan drawbridge:migrations command to export them. Then migrate the database with php artisan migrate.

For the roles and permissions to work, a Role model, a Permission model, and a User model need to exist. Luckily, Drawbridge ships with three models you can easily extend to add the functionality to your models. In your app/models directory, create the following two models.

useSearsaw\Drawbridge\Models\BridgeRole;
class Role extends BridgeRole {}
useSearsaw\Drawbridge\Models\BridgePermission;
class Permission extends BridgePermission {}

There is also a BridgeUser model included in the package to give the functionality for adding roles to your User model. The below code adds the BridgeUser model functionality to the default User model that comes with Laravel.

useIlluminate\Auth\UserInterface;
useIlluminate\Auth\Reminders\RemindableInterface;
useSearsaw\Drawbridge\Models\BridgeUser;
class User extends BridgeUser implements UserInterface, RemindableInterface {
...

All three models extend Magniloquent, a model validation package for Laravel models. Magniloquent extends Eloquent, giving your models all the functionality of Eloquent with the added benefit of model validation. For more information on Magniloquent, visit its Github page.

Adding Roles and Permissions

Roles are groups of permissions. Users can have different roles, giving them extended abilities depending on the roles they have.

To add roles to a user, use the addRole method on a user object. This method can take a role ID, a role name, or a role object. If the role object has not yet been saved to the database, it will be saved before being attached to the user. This method can also take an array of any combination of the previous three.

To add permissions to a role, use the addPermission method on a role object. This method works exactly as the addRole method mentioned above. This makes adding permissions as easy as possible.

$user = User::find(1);
$admin = newRole;
$admin->name = 'admin';
$admin->display_name = 'Admin';
$admin->save();
$author = newRole;
$author->name = 'author';
$author->display_name = 'Author';
$author->save();
$edit = newPermission;
$edit->name = 'can_edit';
$edit->display_name = 'Can Edit';
$edit->save();
$view = newPermission;
$view->name = 'can_view';
$view->display_name = 'Can View';
$view->save();
$user->addRole([$admin, $author]);
$admin->addPermission([$edit->id, 'can_view']);

##Checking for roles or permissions

To check if a user has a certain role, use the hasRole method on a user object. It can take an ID, a name, or a Role object itself. It returns true if the user has the role or false if the user does not.

To check if a role has a certain permission, use the hasPermission method on a role object. It can take an ID, a name, or a Permission object itself. It returns true if the role has the permission or false if the role does not.

You can also check to see if a user has a particular permission by using the the hasPermission method on a user object. It can take an ID, a name, or a Permission object itself. It returns true if the user has the permission or false if the user does not.

$user = User::find(1);
$admin = Role::find(2);
$edit = Permission::find(1);
$user->hasRole('admin');
$user->hasRole($admin);
$user->hasRole(2);
$admin->hasPermission('can_edit');
$admin->hasPermission($edit);
$admin->hasPermission(1);
$user->hasPermission('can_edit');
$user->hasPermission($edit);
$user->hasPermission(1);

##License

The MIT License (MIT)

Copyright (c) 2013 Alex Sears

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

Roles and permissions for Laravel 4.

Resources

Stars

18 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
This repository was archived by the owner on Feb 11, 2023. It is now read-only.

Latest commit

History

32 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Drawbridge

This repo is no longer being maintained. Since Laravel now requires PHP 5.4, using Laravel allows you to use traits. The Entrust package already supports this and has a much bigger community. I recommend the use of it instead.

Roles and permissions for Laravel 4.

##Installation

Add searsaw/drawbridge as a requirement to your composer.json.

{
"require": {
"searsaw/drawbridge": "dev-master"
}
}

Update your application packages with composer update or install them with composer install. Then add the service provider to providers array in the app/config/app.php file.

'providers' => array(
'Illuminate\Foundation\Providers\ArtisanServiceProvider',
'Illuminate\Auth\AuthServiceProvider',
...
'Illuminate\Workbench\WorkbenchServiceProvider',
'Searsaw\Drawbridge\DrawbridgeServiceProvider'
),

##Getting Started

First, we need to export the migrations into the migrations directory so the tables for Drawbridge can be put into the database. Run the php artisan drawbridge:migrations command to export them. Then migrate the database with php artisan migrate.

For the roles and permissions to work, a Role model, a Permission model, and a User model need to exist. Luckily, Drawbridge ships with three models you can easily extend to add the functionality to your models. In your app/models directory, create the following two models.

useSearsaw\Drawbridge\Models\BridgeRole;
class Role extends BridgeRole {}
useSearsaw\Drawbridge\Models\BridgePermission;
class Permission extends BridgePermission {}

There is also a BridgeUser model included in the package to give the functionality for adding roles to your User model. The below code adds the BridgeUser model functionality to the default User model that comes with Laravel.

useIlluminate\Auth\UserInterface;
useIlluminate\Auth\Reminders\RemindableInterface;
useSearsaw\Drawbridge\Models\BridgeUser;
class User extends BridgeUser implements UserInterface, RemindableInterface {
...

All three models extend Magniloquent, a model validation package for Laravel models. Magniloquent extends Eloquent, giving your models all the functionality of Eloquent with the added benefit of model validation. For more information on Magniloquent, visit its Github page.

Adding Roles and Permissions

Roles are groups of permissions. Users can have different roles, giving them extended abilities depending on the roles they have.

To add roles to a user, use the addRole method on a user object. This method can take a role ID, a role name, or a role object. If the role object has not yet been saved to the database, it will be saved before being attached to the user. This method can also take an array of any combination of the previous three.

To add permissions to a role, use the addPermission method on a role object. This method works exactly as the addRole method mentioned above. This makes adding permissions as easy as possible.

$user = User::find(1);
$admin = newRole;
$admin->name = 'admin';
$admin->display_name = 'Admin';
$admin->save();
$author = newRole;
$author->name = 'author';
$author->display_name = 'Author';
$author->save();
$edit = newPermission;
$edit->name = 'can_edit';
$edit->display_name = 'Can Edit';
$edit->save();
$view = newPermission;
$view->name = 'can_view';
$view->display_name = 'Can View';
$view->save();
$user->addRole([$admin, $author]);
$admin->addPermission([$edit->id, 'can_view']);

##Checking for roles or permissions

To check if a user has a certain role, use the hasRole method on a user object. It can take an ID, a name, or a Role object itself. It returns true if the user has the role or false if the user does not.

To check if a role has a certain permission, use the hasPermission method on a role object. It can take an ID, a name, or a Permission object itself. It returns true if the role has the permission or false if the role does not.

You can also check to see if a user has a particular permission by using the the hasPermission method on a user object. It can take an ID, a name, or a Permission object itself. It returns true if the user has the permission or false if the user does not.

$user = User::find(1);
$admin = Role::find(2);
$edit = Permission::find(1);
$user->hasRole('admin');
$user->hasRole($admin);
$user->hasRole(2);
$admin->hasPermission('can_edit');
$admin->hasPermission($edit);
$admin->hasPermission(1);
$user->hasPermission('can_edit');
$user->hasPermission($edit);
$user->hasPermission(1);

##License

The MIT License (MIT)

Copyright (c) 2013 Alex Sears

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

Roles and permissions for Laravel 4.

Resources

Stars

18 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Feb 11, 2023. It is now read-only.

Latest commit

History

32 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Drawbridge

This repo is no longer being maintained. Since Laravel now requires PHP 5.4, using Laravel allows you to use traits. The Entrust package already supports this and has a much bigger community. I recommend the use of it instead.

Roles and permissions for Laravel 4.

##Installation

Add searsaw/drawbridge as a requirement to your composer.json.

{
"require": {
"searsaw/drawbridge": "dev-master"
}
}

Update your application packages with composer update or install them with composer install. Then add the service provider to providers array in the app/config/app.php file.

'providers' => array(
'Illuminate\Foundation\Providers\ArtisanServiceProvider',
'Illuminate\Auth\AuthServiceProvider',
...
'Illuminate\Workbench\WorkbenchServiceProvider',
'Searsaw\Drawbridge\DrawbridgeServiceProvider'
),

##Getting Started

First, we need to export the migrations into the migrations directory so the tables for Drawbridge can be put into the database. Run the php artisan drawbridge:migrations command to export them. Then migrate the database with php artisan migrate.

For the roles and permissions to work, a Role model, a Permission model, and a User model need to exist. Luckily, Drawbridge ships with three models you can easily extend to add the functionality to your models. In your app/models directory, create the following two models.

useSearsaw\Drawbridge\Models\BridgeRole;
class Role extends BridgeRole {}
useSearsaw\Drawbridge\Models\BridgePermission;
class Permission extends BridgePermission {}

There is also a BridgeUser model included in the package to give the functionality for adding roles to your User model. The below code adds the BridgeUser model functionality to the default User model that comes with Laravel.

useIlluminate\Auth\UserInterface;
useIlluminate\Auth\Reminders\RemindableInterface;
useSearsaw\Drawbridge\Models\BridgeUser;
class User extends BridgeUser implements UserInterface, RemindableInterface {
...

All three models extend Magniloquent, a model validation package for Laravel models. Magniloquent extends Eloquent, giving your models all the functionality of Eloquent with the added benefit of model validation. For more information on Magniloquent, visit its Github page.

Adding Roles and Permissions

Roles are groups of permissions. Users can have different roles, giving them extended abilities depending on the roles they have.

To add roles to a user, use the addRole method on a user object. This method can take a role ID, a role name, or a role object. If the role object has not yet been saved to the database, it will be saved before being attached to the user. This method can also take an array of any combination of the previous three.

To add permissions to a role, use the addPermission method on a role object. This method works exactly as the addRole method mentioned above. This makes adding permissions as easy as possible.

$user = User::find(1);
$admin = newRole;
$admin->name = 'admin';
$admin->display_name = 'Admin';
$admin->save();
$author = newRole;
$author->name = 'author';
$author->display_name = 'Author';
$author->save();
$edit = newPermission;
$edit->name = 'can_edit';
$edit->display_name = 'Can Edit';
$edit->save();
$view = newPermission;
$view->name = 'can_view';
$view->display_name = 'Can View';
$view->save();
$user->addRole([$admin, $author]);
$admin->addPermission([$edit->id, 'can_view']);

##Checking for roles or permissions

To check if a user has a certain role, use the hasRole method on a user object. It can take an ID, a name, or a Role object itself. It returns true if the user has the role or false if the user does not.

To check if a role has a certain permission, use the hasPermission method on a role object. It can take an ID, a name, or a Permission object itself. It returns true if the role has the permission or false if the role does not.

You can also check to see if a user has a particular permission by using the the hasPermission method on a user object. It can take an ID, a name, or a Permission object itself. It returns true if the user has the permission or false if the user does not.

$user = User::find(1);
$admin = Role::find(2);
$edit = Permission::find(1);
$user->hasRole('admin');
$user->hasRole($admin);
$user->hasRole(2);
$admin->hasPermission('can_edit');
$admin->hasPermission($edit);
$admin->hasPermission(1);
$user->hasPermission('can_edit');
$user->hasPermission($edit);
$user->hasPermission(1);

##License

The MIT License (MIT)

Copyright (c) 2013 Alex Sears

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

Roles and permissions for Laravel 4.

Resources

Stars

18 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Feb 11, 2023. It is now read-only.

Latest commit

History

32 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Drawbridge

This repo is no longer being maintained. Since Laravel now requires PHP 5.4, using Laravel allows you to use traits. The Entrust package already supports this and has a much bigger community. I recommend the use of it instead.

Roles and permissions for Laravel 4.

##Installation

Add searsaw/drawbridge as a requirement to your composer.json.

{
"require": {
"searsaw/drawbridge": "dev-master"
}
}

Update your application packages with composer update or install them with composer install. Then add the service provider to providers array in the app/config/app.php file.

'providers' => array(
'Illuminate\Foundation\Providers\ArtisanServiceProvider',
'Illuminate\Auth\AuthServiceProvider',
...
'Illuminate\Workbench\WorkbenchServiceProvider',
'Searsaw\Drawbridge\DrawbridgeServiceProvider'
),

##Getting Started

First, we need to export the migrations into the migrations directory so the tables for Drawbridge can be put into the database. Run the php artisan drawbridge:migrations command to export them. Then migrate the database with php artisan migrate.

For the roles and permissions to work, a Role model, a Permission model, and a User model need to exist. Luckily, Drawbridge ships with three models you can easily extend to add the functionality to your models. In your app/models directory, create the following two models.

useSearsaw\Drawbridge\Models\BridgeRole;
class Role extends BridgeRole {}
useSearsaw\Drawbridge\Models\BridgePermission;
class Permission extends BridgePermission {}

There is also a BridgeUser model included in the package to give the functionality for adding roles to your User model. The below code adds the BridgeUser model functionality to the default User model that comes with Laravel.

useIlluminate\Auth\UserInterface;
useIlluminate\Auth\Reminders\RemindableInterface;
useSearsaw\Drawbridge\Models\BridgeUser;
class User extends BridgeUser implements UserInterface, RemindableInterface {
...

All three models extend Magniloquent, a model validation package for Laravel models. Magniloquent extends Eloquent, giving your models all the functionality of Eloquent with the added benefit of model validation. For more information on Magniloquent, visit its Github page.

Adding Roles and Permissions

Roles are groups of permissions. Users can have different roles, giving them extended abilities depending on the roles they have.

To add roles to a user, use the addRole method on a user object. This method can take a role ID, a role name, or a role object. If the role object has not yet been saved to the database, it will be saved before being attached to the user. This method can also take an array of any combination of the previous three.

To add permissions to a role, use the addPermission method on a role object. This method works exactly as the addRole method mentioned above. This makes adding permissions as easy as possible.

$user = User::find(1);
$admin = newRole;
$admin->name = 'admin';
$admin->display_name = 'Admin';
$admin->save();
$author = newRole;
$author->name = 'author';
$author->display_name = 'Author';
$author->save();
$edit = newPermission;
$edit->name = 'can_edit';
$edit->display_name = 'Can Edit';
$edit->save();
$view = newPermission;
$view->name = 'can_view';
$view->display_name = 'Can View';
$view->save();
$user->addRole([$admin, $author]);
$admin->addPermission([$edit->id, 'can_view']);

##Checking for roles or permissions

To check if a user has a certain role, use the hasRole method on a user object. It can take an ID, a name, or a Role object itself. It returns true if the user has the role or false if the user does not.

To check if a role has a certain permission, use the hasPermission method on a role object. It can take an ID, a name, or a Permission object itself. It returns true if the role has the permission or false if the role does not.

You can also check to see if a user has a particular permission by using the the hasPermission method on a user object. It can take an ID, a name, or a Permission object itself. It returns true if the user has the permission or false if the user does not.

$user = User::find(1);
$admin = Role::find(2);
$edit = Permission::find(1);
$user->hasRole('admin');
$user->hasRole($admin);
$user->hasRole(2);
$admin->hasPermission('can_edit');
$admin->hasPermission($edit);
$admin->hasPermission(1);
$user->hasPermission('can_edit');
$user->hasPermission($edit);
$user->hasPermission(1);

##License

The MIT License (MIT)

Copyright (c) 2013 Alex Sears

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

Roles and permissions for Laravel 4.

Resources

Stars

18 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
This repository was archived by the owner on Feb 11, 2023. It is now read-only.

Latest commit

History

32 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Drawbridge

This repo is no longer being maintained. Since Laravel now requires PHP 5.4, using Laravel allows you to use traits. The Entrust package already supports this and has a much bigger community. I recommend the use of it instead.

Roles and permissions for Laravel 4.

##Installation

Add searsaw/drawbridge as a requirement to your composer.json.

{
"require": {
"searsaw/drawbridge": "dev-master"
}
}

Update your application packages with composer update or install them with composer install. Then add the service provider to providers array in the app/config/app.php file.

'providers' => array(
'Illuminate\Foundation\Providers\ArtisanServiceProvider',
'Illuminate\Auth\AuthServiceProvider',
...
'Illuminate\Workbench\WorkbenchServiceProvider',
'Searsaw\Drawbridge\DrawbridgeServiceProvider'
),

##Getting Started

First, we need to export the migrations into the migrations directory so the tables for Drawbridge can be put into the database. Run the php artisan drawbridge:migrations command to export them. Then migrate the database with php artisan migrate.

For the roles and permissions to work, a Role model, a Permission model, and a User model need to exist. Luckily, Drawbridge ships with three models you can easily extend to add the functionality to your models. In your app/models directory, create the following two models.

useSearsaw\Drawbridge\Models\BridgeRole;
class Role extends BridgeRole {}
useSearsaw\Drawbridge\Models\BridgePermission;
class Permission extends BridgePermission {}

There is also a BridgeUser model included in the package to give the functionality for adding roles to your User model. The below code adds the BridgeUser model functionality to the default User model that comes with Laravel.

useIlluminate\Auth\UserInterface;
useIlluminate\Auth\Reminders\RemindableInterface;
useSearsaw\Drawbridge\Models\BridgeUser;
class User extends BridgeUser implements UserInterface, RemindableInterface {
...

All three models extend Magniloquent, a model validation package for Laravel models. Magniloquent extends Eloquent, giving your models all the functionality of Eloquent with the added benefit of model validation. For more information on Magniloquent, visit its Github page.

Adding Roles and Permissions

Roles are groups of permissions. Users can have different roles, giving them extended abilities depending on the roles they have.

To add roles to a user, use the addRole method on a user object. This method can take a role ID, a role name, or a role object. If the role object has not yet been saved to the database, it will be saved before being attached to the user. This method can also take an array of any combination of the previous three.

To add permissions to a role, use the addPermission method on a role object. This method works exactly as the addRole method mentioned above. This makes adding permissions as easy as possible.

$user = User::find(1);
$admin = newRole;
$admin->name = 'admin';
$admin->display_name = 'Admin';
$admin->save();
$author = newRole;
$author->name = 'author';
$author->display_name = 'Author';
$author->save();
$edit = newPermission;
$edit->name = 'can_edit';
$edit->display_name = 'Can Edit';
$edit->save();
$view = newPermission;
$view->name = 'can_view';
$view->display_name = 'Can View';
$view->save();
$user->addRole([$admin, $author]);
$admin->addPermission([$edit->id, 'can_view']);

##Checking for roles or permissions

To check if a user has a certain role, use the hasRole method on a user object. It can take an ID, a name, or a Role object itself. It returns true if the user has the role or false if the user does not.

To check if a role has a certain permission, use the hasPermission method on a role object. It can take an ID, a name, or a Permission object itself. It returns true if the role has the permission or false if the role does not.

You can also check to see if a user has a particular permission by using the the hasPermission method on a user object. It can take an ID, a name, or a Permission object itself. It returns true if the user has the permission or false if the user does not.

$user = User::find(1);
$admin = Role::find(2);
$edit = Permission::find(1);
$user->hasRole('admin');
$user->hasRole($admin);
$user->hasRole(2);
$admin->hasPermission('can_edit');
$admin->hasPermission($edit);
$admin->hasPermission(1);
$user->hasPermission('can_edit');
$user->hasPermission($edit);
$user->hasPermission(1);

##License

The MIT License (MIT)

Copyright (c) 2013 Alex Sears

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

Roles and permissions for Laravel 4.

Resources

Stars

18 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Feb 11, 2023. It is now read-only.

Latest commit

History

32 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Drawbridge

This repo is no longer being maintained. Since Laravel now requires PHP 5.4, using Laravel allows you to use traits. The Entrust package already supports this and has a much bigger community. I recommend the use of it instead.

Roles and permissions for Laravel 4.

##Installation

Add searsaw/drawbridge as a requirement to your composer.json.

{
"require": {
"searsaw/drawbridge": "dev-master"
}
}

Update your application packages with composer update or install them with composer install. Then add the service provider to providers array in the app/config/app.php file.

'providers' => array(
'Illuminate\Foundation\Providers\ArtisanServiceProvider',
'Illuminate\Auth\AuthServiceProvider',
...
'Illuminate\Workbench\WorkbenchServiceProvider',
'Searsaw\Drawbridge\DrawbridgeServiceProvider'
),

##Getting Started

First, we need to export the migrations into the migrations directory so the tables for Drawbridge can be put into the database. Run the php artisan drawbridge:migrations command to export them. Then migrate the database with php artisan migrate.

For the roles and permissions to work, a Role model, a Permission model, and a User model need to exist. Luckily, Drawbridge ships with three models you can easily extend to add the functionality to your models. In your app/models directory, create the following two models.

useSearsaw\Drawbridge\Models\BridgeRole;
class Role extends BridgeRole {}
useSearsaw\Drawbridge\Models\BridgePermission;
class Permission extends BridgePermission {}

There is also a BridgeUser model included in the package to give the functionality for adding roles to your User model. The below code adds the BridgeUser model functionality to the default User model that comes with Laravel.

useIlluminate\Auth\UserInterface;
useIlluminate\Auth\Reminders\RemindableInterface;
useSearsaw\Drawbridge\Models\BridgeUser;
class User extends BridgeUser implements UserInterface, RemindableInterface {
...

All three models extend Magniloquent, a model validation package for Laravel models. Magniloquent extends Eloquent, giving your models all the functionality of Eloquent with the added benefit of model validation. For more information on Magniloquent, visit its Github page.

Adding Roles and Permissions

Roles are groups of permissions. Users can have different roles, giving them extended abilities depending on the roles they have.

To add roles to a user, use the addRole method on a user object. This method can take a role ID, a role name, or a role object. If the role object has not yet been saved to the database, it will be saved before being attached to the user. This method can also take an array of any combination of the previous three.

To add permissions to a role, use the addPermission method on a role object. This method works exactly as the addRole method mentioned above. This makes adding permissions as easy as possible.

$user = User::find(1);
$admin = newRole;
$admin->name = 'admin';
$admin->display_name = 'Admin';
$admin->save();
$author = newRole;
$author->name = 'author';
$author->display_name = 'Author';
$author->save();
$edit = newPermission;
$edit->name = 'can_edit';
$edit->display_name = 'Can Edit';
$edit->save();
$view = newPermission;
$view->name = 'can_view';
$view->display_name = 'Can View';
$view->save();
$user->addRole([$admin, $author]);
$admin->addPermission([$edit->id, 'can_view']);

##Checking for roles or permissions

To check if a user has a certain role, use the hasRole method on a user object. It can take an ID, a name, or a Role object itself. It returns true if the user has the role or false if the user does not.

To check if a role has a certain permission, use the hasPermission method on a role object. It can take an ID, a name, or a Permission object itself. It returns true if the role has the permission or false if the role does not.

You can also check to see if a user has a particular permission by using the the hasPermission method on a user object. It can take an ID, a name, or a Permission object itself. It returns true if the user has the permission or false if the user does not.

$user = User::find(1);
$admin = Role::find(2);
$edit = Permission::find(1);
$user->hasRole('admin');
$user->hasRole($admin);
$user->hasRole(2);
$admin->hasPermission('can_edit');
$admin->hasPermission($edit);
$admin->hasPermission(1);
$user->hasPermission('can_edit');
$user->hasPermission($edit);
$user->hasPermission(1);

##License

The MIT License (MIT)

Copyright (c) 2013 Alex Sears

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

Roles and permissions for Laravel 4.

Resources

Stars

18 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Feb 11, 2023. It is now read-only.

Latest commit

History

32 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Drawbridge

This repo is no longer being maintained. Since Laravel now requires PHP 5.4, using Laravel allows you to use traits. The Entrust package already supports this and has a much bigger community. I recommend the use of it instead.

Roles and permissions for Laravel 4.

##Installation

Add searsaw/drawbridge as a requirement to your composer.json.

{
"require": {
"searsaw/drawbridge": "dev-master"
}
}

Update your application packages with composer update or install them with composer install. Then add the service provider to providers array in the app/config/app.php file.

'providers' => array(
'Illuminate\Foundation\Providers\ArtisanServiceProvider',
'Illuminate\Auth\AuthServiceProvider',
...
'Illuminate\Workbench\WorkbenchServiceProvider',
'Searsaw\Drawbridge\DrawbridgeServiceProvider'
),

##Getting Started

First, we need to export the migrations into the migrations directory so the tables for Drawbridge can be put into the database. Run the php artisan drawbridge:migrations command to export them. Then migrate the database with php artisan migrate.

For the roles and permissions to work, a Role model, a Permission model, and a User model need to exist. Luckily, Drawbridge ships with three models you can easily extend to add the functionality to your models. In your app/models directory, create the following two models.

useSearsaw\Drawbridge\Models\BridgeRole;
class Role extends BridgeRole {}
useSearsaw\Drawbridge\Models\BridgePermission;
class Permission extends BridgePermission {}

There is also a BridgeUser model included in the package to give the functionality for adding roles to your User model. The below code adds the BridgeUser model functionality to the default User model that comes with Laravel.

useIlluminate\Auth\UserInterface;
useIlluminate\Auth\Reminders\RemindableInterface;
useSearsaw\Drawbridge\Models\BridgeUser;
class User extends BridgeUser implements UserInterface, RemindableInterface {
...

All three models extend Magniloquent, a model validation package for Laravel models. Magniloquent extends Eloquent, giving your models all the functionality of Eloquent with the added benefit of model validation. For more information on Magniloquent, visit its Github page.

Adding Roles and Permissions

Roles are groups of permissions. Users can have different roles, giving them extended abilities depending on the roles they have.

To add roles to a user, use the addRole method on a user object. This method can take a role ID, a role name, or a role object. If the role object has not yet been saved to the database, it will be saved before being attached to the user. This method can also take an array of any combination of the previous three.

To add permissions to a role, use the addPermission method on a role object. This method works exactly as the addRole method mentioned above. This makes adding permissions as easy as possible.

$user = User::find(1);
$admin = newRole;
$admin->name = 'admin';
$admin->display_name = 'Admin';
$admin->save();
$author = newRole;
$author->name = 'author';
$author->display_name = 'Author';
$author->save();
$edit = newPermission;
$edit->name = 'can_edit';
$edit->display_name = 'Can Edit';
$edit->save();
$view = newPermission;
$view->name = 'can_view';
$view->display_name = 'Can View';
$view->save();
$user->addRole([$admin, $author]);
$admin->addPermission([$edit->id, 'can_view']);

##Checking for roles or permissions

To check if a user has a certain role, use the hasRole method on a user object. It can take an ID, a name, or a Role object itself. It returns true if the user has the role or false if the user does not.

To check if a role has a certain permission, use the hasPermission method on a role object. It can take an ID, a name, or a Permission object itself. It returns true if the role has the permission or false if the role does not.

You can also check to see if a user has a particular permission by using the the hasPermission method on a user object. It can take an ID, a name, or a Permission object itself. It returns true if the user has the permission or false if the user does not.

$user = User::find(1);
$admin = Role::find(2);
$edit = Permission::find(1);
$user->hasRole('admin');
$user->hasRole($admin);
$user->hasRole(2);
$admin->hasPermission('can_edit');
$admin->hasPermission($edit);
$admin->hasPermission(1);
$user->hasPermission('can_edit');
$user->hasPermission($edit);
$user->hasPermission(1);

##License

The MIT License (MIT)

Copyright (c) 2013 Alex Sears

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

Roles and permissions for Laravel 4.

Resources

Stars

18 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
This repository was archived by the owner on Feb 11, 2023. It is now read-only.

Latest commit

History

32 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Drawbridge

This repo is no longer being maintained. Since Laravel now requires PHP 5.4, using Laravel allows you to use traits. The Entrust package already supports this and has a much bigger community. I recommend the use of it instead.

Roles and permissions for Laravel 4.

##Installation

Add searsaw/drawbridge as a requirement to your composer.json.

{
"require": {
"searsaw/drawbridge": "dev-master"
}
}

Update your application packages with composer update or install them with composer install. Then add the service provider to providers array in the app/config/app.php file.

'providers' => array(
'Illuminate\Foundation\Providers\ArtisanServiceProvider',
'Illuminate\Auth\AuthServiceProvider',
...
'Illuminate\Workbench\WorkbenchServiceProvider',
'Searsaw\Drawbridge\DrawbridgeServiceProvider'
),

##Getting Started

First, we need to export the migrations into the migrations directory so the tables for Drawbridge can be put into the database. Run the php artisan drawbridge:migrations command to export them. Then migrate the database with php artisan migrate.

For the roles and permissions to work, a Role model, a Permission model, and a User model need to exist. Luckily, Drawbridge ships with three models you can easily extend to add the functionality to your models. In your app/models directory, create the following two models.

useSearsaw\Drawbridge\Models\BridgeRole;
class Role extends BridgeRole {}
useSearsaw\Drawbridge\Models\BridgePermission;
class Permission extends BridgePermission {}

There is also a BridgeUser model included in the package to give the functionality for adding roles to your User model. The below code adds the BridgeUser model functionality to the default User model that comes with Laravel.

useIlluminate\Auth\UserInterface;
useIlluminate\Auth\Reminders\RemindableInterface;
useSearsaw\Drawbridge\Models\BridgeUser;
class User extends BridgeUser implements UserInterface, RemindableInterface {
...

All three models extend Magniloquent, a model validation package for Laravel models. Magniloquent extends Eloquent, giving your models all the functionality of Eloquent with the added benefit of model validation. For more information on Magniloquent, visit its Github page.

Adding Roles and Permissions

Roles are groups of permissions. Users can have different roles, giving them extended abilities depending on the roles they have.

To add roles to a user, use the addRole method on a user object. This method can take a role ID, a role name, or a role object. If the role object has not yet been saved to the database, it will be saved before being attached to the user. This method can also take an array of any combination of the previous three.

To add permissions to a role, use the addPermission method on a role object. This method works exactly as the addRole method mentioned above. This makes adding permissions as easy as possible.

$user = User::find(1);
$admin = newRole;
$admin->name = 'admin';
$admin->display_name = 'Admin';
$admin->save();
$author = newRole;
$author->name = 'author';
$author->display_name = 'Author';
$author->save();
$edit = newPermission;
$edit->name = 'can_edit';
$edit->display_name = 'Can Edit';
$edit->save();
$view = newPermission;
$view->name = 'can_view';
$view->display_name = 'Can View';
$view->save();
$user->addRole([$admin, $author]);
$admin->addPermission([$edit->id, 'can_view']);

##Checking for roles or permissions

To check if a user has a certain role, use the hasRole method on a user object. It can take an ID, a name, or a Role object itself. It returns true if the user has the role or false if the user does not.

To check if a role has a certain permission, use the hasPermission method on a role object. It can take an ID, a name, or a Permission object itself. It returns true if the role has the permission or false if the role does not.

You can also check to see if a user has a particular permission by using the the hasPermission method on a user object. It can take an ID, a name, or a Permission object itself. It returns true if the user has the permission or false if the user does not.

$user = User::find(1);
$admin = Role::find(2);
$edit = Permission::find(1);
$user->hasRole('admin');
$user->hasRole($admin);
$user->hasRole(2);
$admin->hasPermission('can_edit');
$admin->hasPermission($edit);
$admin->hasPermission(1);
$user->hasPermission('can_edit');
$user->hasPermission($edit);
$user->hasPermission(1);

##License

The MIT License (MIT)

Copyright (c) 2013 Alex Sears

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

Roles and permissions for Laravel 4.

Resources

Stars

18 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages