Skip to content
This repository was archived by the owner on Jan 29, 2024. It is now read-only.

Commit f2b9f90

Browse files
authored
Merge pull request #171 from mateusjunges/feature/route-model-binding
Add support for route model key binding. Should fixes #170
2 parents 8584197 + cd9d62f commit f2b9f90

File tree

21 files changed

+148
-25
lines changed

21 files changed

+148
-25
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
All notable changes to `mateusjunges/laravel-acl` will be documented in this file.
44

5+
# 2.4.3
6+
- Add support for route model key bindings (#170)
7+
58
# 2.4.2
69
- Change test suite to run on GitHub Actions instead of Travis CI.
710

config/acl.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,24 @@
2828
*/
2929
'group' => Junges\ACL\Http\Models\Group::class,
3030
],
31+
32+
/*
33+
|--------------------------------------------------------------------------
34+
| Route Model Binding
35+
|--------------------------------------------------------------------------
36+
|
37+
| If you would like model binding to use a database column other than id when
38+
| retrieving a given model class, you may override the getRouteKeyName method
39+
| on the Eloquent model with yours. The default key used for route model binding
40+
| in this package is the `slug` database column. You can modify it by changing the
41+
| following configuration:
42+
|
43+
*/
44+
'route_model_binding_keys' => [
45+
'group_model' => 'slug',
46+
'permission_model' => 'slug',
47+
],
48+
3149
/*
3250
|--------------------------------------------------------------------------
3351
| Tables

docs/.vuepress/dist/404.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88
<meta name="generator" content="VuePress 1.3.1">
99
<link rel="shortcut icon" href="/laravel-acl/favicon.ico">
1010

11-
<link rel="preload" href="/laravel-acl/assets/css/0.styles.8095ea24.css" as="style"><link rel="preload" href="/laravel-acl/assets/js/app.9b8d383f.js" as="script"><link rel="preload" href="/laravel-acl/assets/js/4.b2c0328d.js" as="script"><link rel="prefetch" href="/laravel-acl/assets/js/2.303f5113.js"><link rel="prefetch" href="/laravel-acl/assets/js/3.e977176a.js"><link rel="prefetch" href="/laravel-acl/assets/js/5.75941ce9.js"><link rel="prefetch" href="/laravel-acl/assets/js/6.f89567bb.js"><link rel="prefetch" href="/laravel-acl/assets/js/7.869ae31f.js"><link rel="prefetch" href="/laravel-acl/assets/js/8.0152cbfd.js">
11+
<link rel="preload" href="/laravel-acl/assets/css/0.styles.8095ea24.css" as="style"><link rel="preload" href="/laravel-acl/assets/js/app.e50979f0.js" as="script"><link rel="preload" href="/laravel-acl/assets/js/4.b2c0328d.js" as="script"><link rel="prefetch" href="/laravel-acl/assets/js/2.303f5113.js"><link rel="prefetch" href="/laravel-acl/assets/js/3.e977176a.js"><link rel="prefetch" href="/laravel-acl/assets/js/5.75941ce9.js"><link rel="prefetch" href="/laravel-acl/assets/js/6.f89567bb.js"><link rel="prefetch" href="/laravel-acl/assets/js/7.1c303bad.js"><link rel="prefetch" href="/laravel-acl/assets/js/8.0152cbfd.js">
1212
<link rel="stylesheet" href="/laravel-acl/assets/css/0.styles.8095ea24.css">
1313
</head>
1414
<body>
1515
<div id="app" data-server-rendered="true"><div class="theme-container"><div class="theme-default-content"><h1>404</h1> <blockquote>How did we get here?</blockquote> <a href="/laravel-acl/" class="router-link-active">
1616
Take me home.
1717
</a></div></div><div class="global-ui"></div></div>
18-
<script src="/laravel-acl/assets/js/app.9b8d383f.js" defer></script><script src="/laravel-acl/assets/js/4.b2c0328d.js" defer></script>
18+
<script src="/laravel-acl/assets/js/app.e50979f0.js" defer></script><script src="/laravel-acl/assets/js/4.b2c0328d.js" defer></script>
1919
</body>
2020
</html>

docs/.vuepress/dist/assets/js/7.869ae31f.js renamed to docs/.vuepress/dist/assets/js/7.1c303bad.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/.vuepress/dist/assets/js/app.9b8d383f.js renamed to docs/.vuepress/dist/assets/js/app.e50979f0.js

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/.vuepress/dist/guide/getting-started.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<meta name="generator" content="VuePress 1.3.1">
99
<link rel="shortcut icon" href="/laravel-acl/favicon.ico">
1010

11-
<link rel="preload" href="/laravel-acl/assets/css/0.styles.8095ea24.css" as="style"><link rel="preload" href="/laravel-acl/assets/js/app.9b8d383f.js" as="script"><link rel="preload" href="/laravel-acl/assets/js/2.303f5113.js" as="script"><link rel="preload" href="/laravel-acl/assets/js/6.f89567bb.js" as="script"><link rel="prefetch" href="/laravel-acl/assets/js/3.e977176a.js"><link rel="prefetch" href="/laravel-acl/assets/js/4.b2c0328d.js"><link rel="prefetch" href="/laravel-acl/assets/js/5.75941ce9.js"><link rel="prefetch" href="/laravel-acl/assets/js/7.869ae31f.js"><link rel="prefetch" href="/laravel-acl/assets/js/8.0152cbfd.js">
11+
<link rel="preload" href="/laravel-acl/assets/css/0.styles.8095ea24.css" as="style"><link rel="preload" href="/laravel-acl/assets/js/app.e50979f0.js" as="script"><link rel="preload" href="/laravel-acl/assets/js/2.303f5113.js" as="script"><link rel="preload" href="/laravel-acl/assets/js/6.f89567bb.js" as="script"><link rel="prefetch" href="/laravel-acl/assets/js/3.e977176a.js"><link rel="prefetch" href="/laravel-acl/assets/js/4.b2c0328d.js"><link rel="prefetch" href="/laravel-acl/assets/js/5.75941ce9.js"><link rel="prefetch" href="/laravel-acl/assets/js/7.1c303bad.js"><link rel="prefetch" href="/laravel-acl/assets/js/8.0152cbfd.js">
1212
<link rel="stylesheet" href="/laravel-acl/assets/css/0.styles.8095ea24.css">
1313
</head>
1414
<body>
@@ -106,6 +106,6 @@
106106
</a>
107107
108108
</span></p></div> </main></div><div class="global-ui"></div></div>
109-
<script src="/laravel-acl/assets/js/app.9b8d383f.js" defer></script><script src="/laravel-acl/assets/js/2.303f5113.js" defer></script><script src="/laravel-acl/assets/js/6.f89567bb.js" defer></script>
109+
<script src="/laravel-acl/assets/js/app.e50979f0.js" defer></script><script src="/laravel-acl/assets/js/2.303f5113.js" defer></script><script src="/laravel-acl/assets/js/6.f89567bb.js" defer></script>
110110
</body>
111111
</html>

docs/.vuepress/dist/guide/usage.html

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<meta name="generator" content="VuePress 1.3.1">
99
<link rel="shortcut icon" href="/laravel-acl/favicon.ico">
1010

11-
<link rel="preload" href="/laravel-acl/assets/css/0.styles.8095ea24.css" as="style"><link rel="preload" href="/laravel-acl/assets/js/app.9b8d383f.js" as="script"><link rel="preload" href="/laravel-acl/assets/js/2.303f5113.js" as="script"><link rel="preload" href="/laravel-acl/assets/js/7.869ae31f.js" as="script"><link rel="prefetch" href="/laravel-acl/assets/js/3.e977176a.js"><link rel="prefetch" href="/laravel-acl/assets/js/4.b2c0328d.js"><link rel="prefetch" href="/laravel-acl/assets/js/5.75941ce9.js"><link rel="prefetch" href="/laravel-acl/assets/js/6.f89567bb.js"><link rel="prefetch" href="/laravel-acl/assets/js/8.0152cbfd.js">
11+
<link rel="preload" href="/laravel-acl/assets/css/0.styles.8095ea24.css" as="style"><link rel="preload" href="/laravel-acl/assets/js/app.e50979f0.js" as="script"><link rel="preload" href="/laravel-acl/assets/js/2.303f5113.js" as="script"><link rel="preload" href="/laravel-acl/assets/js/7.1c303bad.js" as="script"><link rel="prefetch" href="/laravel-acl/assets/js/3.e977176a.js"><link rel="prefetch" href="/laravel-acl/assets/js/4.b2c0328d.js"><link rel="prefetch" href="/laravel-acl/assets/js/5.75941ce9.js"><link rel="prefetch" href="/laravel-acl/assets/js/6.f89567bb.js"><link rel="prefetch" href="/laravel-acl/assets/js/8.0152cbfd.js">
1212
<link rel="stylesheet" href="/laravel-acl/assets/css/0.styles.8095ea24.css">
1313
</head>
1414
<body>
@@ -451,7 +451,15 @@
451451
</code></pre></div><p>and with the user's email:</p> <div class="language-bash extra-class"><pre class="language-bash"><code>php artisan user:permissions <span class="token string">&quot;[email protected]&quot;</span>
452452
</code></pre></div><h2 id="extending-and-replacing-models"><a href="#extending-and-replacing-models" class="header-anchor">#</a> Extending and replacing models</h2> <p>If you need to EXTEND the existing <code>Group</code> or <code>Permission</code> models note that:</p> <ul><li>Your <code>Group</code> model needs to extend the <code>\Junges\ACL\Http\Models\Group</code> model</li> <li>Your <code>Permission</code> model needs to extend the <code>\Junges\ACL\Http\Models\Permission</code> model</li></ul> <p>If you need to REPLACE the existing <code>Group</code> or <code>Permission</code> models you need to keep the
453453
following things in mind:</p> <ul><li>Your <code>Group</code> model needs to use the <code>\Junges\ACL\Traits\GroupTrait</code> trait</li> <li>Your <code>Permission</code> model needs to implement the <code>\Junges\ACL\Traits\PermissionTrait</code> trait</li></ul> <p>In both cases, whether extending or replacing, you will need to specify your new models
454-
in the configuration.</p> <p>To do this you must update the <code>models.group</code> and <code>models.permission</code> values in the configuration file.</p> <h3 id="basic-form-templates"><a href="#basic-form-templates" class="header-anchor">#</a> Basic form templates</h3> <p>This package provides form to add a group or permission to the user, and permissions to groups.
454+
in the configuration.</p> <p>To do this you must update the <code>models.group</code> and <code>models.permission</code> values in the configuration file.</p> <h3 id="route-model-key"><a href="#route-model-key" class="header-anchor">#</a> Route model key</h3> <p>If you would like model binding to use a database column other than id when
455+
retrieving a given model class, you may override the getRouteKeyName method
456+
on the Eloquent model with yours. The default key used for route model binding
457+
in this package is the <code>slug</code> database column. You can modify it by changing the
458+
<code>route_model_binding_keys</code> configuration, in <code>config/acl.php</code> file:</p> <div class="language-php extra-class"><pre class="language-php"><code><span class="token single-quoted-string string">'route_model_binding_keys'</span> <span class="token operator">=</span><span class="token operator">&gt;</span> <span class="token punctuation">[</span>
459+
<span class="token single-quoted-string string">'group_model'</span> <span class="token operator">=</span><span class="token operator">&gt;</span> <span class="token single-quoted-string string">'slug'</span><span class="token punctuation">,</span>
460+
<span class="token single-quoted-string string">'permission_model'</span> <span class="token operator">=</span><span class="token operator">&gt;</span> <span class="token single-quoted-string string">'slug'</span>
461+
<span class="token punctuation">]</span><span class="token punctuation">,</span>
462+
</code></pre></div><h3 id="basic-form-templates"><a href="#basic-form-templates" class="header-anchor">#</a> Basic form templates</h3> <p>This package provides form to add a group or permission to the user, and permissions to groups.
455463
Just include the view on you form:</p> <div class="language-php extra-class"><pre class="language-php"><code><span class="token operator">&lt;</span>form action<span class="token operator">=</span><span class="token double-quoted-string string">&quot;&quot;</span> method<span class="token operator">=</span><span class="token double-quoted-string string">&quot;&quot;</span><span class="token operator">&gt;</span>
456464
@<span class="token keyword">include</span><span class="token punctuation">(</span><span class="token single-quoted-string string">'acl::_forms.groups.group'</span><span class="token punctuation">)</span>
457465
<span class="token operator">&lt;</span><span class="token operator">/</span>form<span class="token operator">&gt;</span>
@@ -468,6 +476,6 @@
468476
<a href="/laravel-acl/guide/getting-started.html" class="prev">
469477
Getting started
470478
</a></span> <!----></p></div> </main></div><div class="global-ui"></div></div>
471-
<script src="/laravel-acl/assets/js/app.9b8d383f.js" defer></script><script src="/laravel-acl/assets/js/2.303f5113.js" defer></script><script src="/laravel-acl/assets/js/7.869ae31f.js" defer></script>
479+
<script src="/laravel-acl/assets/js/app.e50979f0.js" defer></script><script src="/laravel-acl/assets/js/2.303f5113.js" defer></script><script src="/laravel-acl/assets/js/7.1c303bad.js" defer></script>
472480
</body>
473481
</html>

docs/.vuepress/dist/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<meta name="generator" content="VuePress 1.3.1">
99
<link rel="shortcut icon" href="/laravel-acl/favicon.ico">
1010

11-
<link rel="preload" href="/laravel-acl/assets/css/0.styles.8095ea24.css" as="style"><link rel="preload" href="/laravel-acl/assets/js/app.9b8d383f.js" as="script"><link rel="preload" href="/laravel-acl/assets/js/2.303f5113.js" as="script"><link rel="preload" href="/laravel-acl/assets/js/5.75941ce9.js" as="script"><link rel="prefetch" href="/laravel-acl/assets/js/3.e977176a.js"><link rel="prefetch" href="/laravel-acl/assets/js/4.b2c0328d.js"><link rel="prefetch" href="/laravel-acl/assets/js/6.f89567bb.js"><link rel="prefetch" href="/laravel-acl/assets/js/7.869ae31f.js"><link rel="prefetch" href="/laravel-acl/assets/js/8.0152cbfd.js">
11+
<link rel="preload" href="/laravel-acl/assets/css/0.styles.8095ea24.css" as="style"><link rel="preload" href="/laravel-acl/assets/js/app.e50979f0.js" as="script"><link rel="preload" href="/laravel-acl/assets/js/2.303f5113.js" as="script"><link rel="preload" href="/laravel-acl/assets/js/5.75941ce9.js" as="script"><link rel="prefetch" href="/laravel-acl/assets/js/3.e977176a.js"><link rel="prefetch" href="/laravel-acl/assets/js/4.b2c0328d.js"><link rel="prefetch" href="/laravel-acl/assets/js/6.f89567bb.js"><link rel="prefetch" href="/laravel-acl/assets/js/7.1c303bad.js"><link rel="prefetch" href="/laravel-acl/assets/js/8.0152cbfd.js">
1212
<link rel="stylesheet" href="/laravel-acl/assets/css/0.styles.8095ea24.css">
1313
</head>
1414
<body>
@@ -22,6 +22,6 @@
2222
Please see the <a href="https://github.com/mateusjunges/laravel-acl/blob/master/LICENSE" target="_blank" rel="noopener noreferrer">License File<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> for more information.</p></div> <div class="footer">
2323
MIT Licensed | Laravel ACL
2424
</div></main></div><div class="global-ui"></div></div>
25-
<script src="/laravel-acl/assets/js/app.9b8d383f.js" defer></script><script src="/laravel-acl/assets/js/2.303f5113.js" defer></script><script src="/laravel-acl/assets/js/5.75941ce9.js" defer></script>
25+
<script src="/laravel-acl/assets/js/app.e50979f0.js" defer></script><script src="/laravel-acl/assets/js/2.303f5113.js" defer></script><script src="/laravel-acl/assets/js/5.75941ce9.js" defer></script>
2626
</body>
2727
</html>

docs/404.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88
<meta name="generator" content="VuePress 1.3.1">
99
<link rel="shortcut icon" href="/laravel-acl/favicon.ico">
1010

11-
<link rel="preload" href="/laravel-acl/assets/css/0.styles.8095ea24.css" as="style"><link rel="preload" href="/laravel-acl/assets/js/app.9b8d383f.js" as="script"><link rel="preload" href="/laravel-acl/assets/js/4.b2c0328d.js" as="script"><link rel="prefetch" href="/laravel-acl/assets/js/2.303f5113.js"><link rel="prefetch" href="/laravel-acl/assets/js/3.e977176a.js"><link rel="prefetch" href="/laravel-acl/assets/js/5.75941ce9.js"><link rel="prefetch" href="/laravel-acl/assets/js/6.f89567bb.js"><link rel="prefetch" href="/laravel-acl/assets/js/7.869ae31f.js"><link rel="prefetch" href="/laravel-acl/assets/js/8.0152cbfd.js">
11+
<link rel="preload" href="/laravel-acl/assets/css/0.styles.8095ea24.css" as="style"><link rel="preload" href="/laravel-acl/assets/js/app.e50979f0.js" as="script"><link rel="preload" href="/laravel-acl/assets/js/4.b2c0328d.js" as="script"><link rel="prefetch" href="/laravel-acl/assets/js/2.303f5113.js"><link rel="prefetch" href="/laravel-acl/assets/js/3.e977176a.js"><link rel="prefetch" href="/laravel-acl/assets/js/5.75941ce9.js"><link rel="prefetch" href="/laravel-acl/assets/js/6.f89567bb.js"><link rel="prefetch" href="/laravel-acl/assets/js/7.1c303bad.js"><link rel="prefetch" href="/laravel-acl/assets/js/8.0152cbfd.js">
1212
<link rel="stylesheet" href="/laravel-acl/assets/css/0.styles.8095ea24.css">
1313
</head>
1414
<body>
1515
<div id="app" data-server-rendered="true"><div class="theme-container"><div class="theme-default-content"><h1>404</h1> <blockquote>How did we get here?</blockquote> <a href="/laravel-acl/" class="router-link-active">
1616
Take me home.
1717
</a></div></div><div class="global-ui"></div></div>
18-
<script src="/laravel-acl/assets/js/app.9b8d383f.js" defer></script><script src="/laravel-acl/assets/js/4.b2c0328d.js" defer></script>
18+
<script src="/laravel-acl/assets/js/app.e50979f0.js" defer></script><script src="/laravel-acl/assets/js/4.b2c0328d.js" defer></script>
1919
</body>
2020
</html>

docs/assets/js/7.1c303bad.js

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)