Skip to content

Commit 95cfe93

Browse files
authored
Merge pull request #104 from artesaos/hotfix/bind-interfaces-to-config-models
Permission and Role interfaces are binded now to the config implementations
2 parents c57047e + 49a19a6 commit 95cfe93

3 files changed

Lines changed: 17 additions & 10 deletions

File tree

src/Defender/Providers/DefenderServiceProvider.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -77,23 +77,23 @@ public function provides()
7777
*/
7878
protected function registerRepositoryInterfaces()
7979
{
80-
$this->app->bind('Artesaos\Defender\Contracts\Permission', 'Artesaos\Defender\Permission');
81-
$this->app->bind('Artesaos\Defender\Contracts\Role', 'Artesaos\Defender\Role');
80+
$this->app->bind('Artesaos\Defender\Contracts\Permission', function ($app) {
81+
return $app->make($this->app['config']->get('defender.permission_model'));
82+
});
83+
$this->app->bind('Artesaos\Defender\Contracts\Role', function ($app) {
84+
return $app->make($this->app['config']->get('defender.role_model'));
85+
});
8286

8387
$this->app->singleton('defender.role', function ($app) {
84-
$roleModel = $app['config']->get('defender.role_model');
85-
86-
return new EloquentRoleRepository($app, $app->make($roleModel));
88+
return new EloquentRoleRepository($app, $app->make(\Artesaos\Defender\Contracts\Role::class));
8789
});
8890

8991
$this->app->singleton('Artesaos\Defender\Contracts\Repositories\RoleRepository', function ($app) {
9092
return $app['defender.role'];
9193
});
9294

9395
$this->app->singleton('defender.permission', function ($app) {
94-
$permissionModel = $app['config']->get('defender.permission_model');
95-
96-
return new EloquentPermissionRepository($app, $app->make($permissionModel));
96+
return new EloquentPermissionRepository($app, $app->make(\Artesaos\Defender\Contracts\Permission::class));
9797
});
9898

9999
$this->app->singleton('Artesaos\Defender\Contracts\Repositories\PermissionRepository', function ($app) {

tests/Defender/AbstractTestCase.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,8 @@ protected function getEnvironmentSetUp($app)
135135
]);
136136

137137
$app['config']->set('defender.user_model', 'Artesaos\Defender\Testing\User');
138+
$app['config']->set('defender.role_model', 'Artesaos\Defender\Role');
139+
$app['config']->set('defender.permission_model', 'Artesaos\Defender\Permission');
138140
$app['config']->set('auth.model', $app['config']->get('defender.user_model'));
139141
}
140142

tests/Defender/DefenderServiceProviderTest.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,13 @@ class DefenderServiceProviderTest extends AbstractTestCase
2626
'testShouldNotLoadHelpers',
2727
];
2828

29+
public function testModelBindings()
30+
{
31+
$this->assertInstanceOf('Artesaos\Defender\Role', $this->app->make('Artesaos\Defender\Contracts\Role'));
32+
33+
$this->assertInstanceOf('Artesaos\Defender\Permission', $this->app->make('Artesaos\Defender\Contracts\Permission'));
34+
}
35+
2936
/**
3037
* Verify if all services are in service container.
3138
*/
@@ -143,8 +150,6 @@ public function testShouldNotLoadHelpers()
143150
*/
144151
public function testShouldPublishConfigAndMigrations()
145152
{
146-
//dd(config_path());
147-
148153
$this->artisan('vendor:publish');
149154

150155
$resourcesPath = __DIR__.'/../../src/resources';

0 commit comments

Comments
 (0)