Thursday 15 March 2012

php - Laravel 4.2 - Using entrust and confide -



php - Laravel 4.2 - Using entrust and confide -

i using "zizaco/confide": "~4.0@dev" , "zizaco/entrust": "1.2.*@dev".

i have set described in 2 tutorials(confide migrations). furthermore, have created next models:

user:

<?php utilize zizaco\confide\confideuser; utilize zizaco\confide\confide; utilize zizaco\confide\confideeloquentrepository; utilize zizaco\entrust\hasrole; utilize carbon\carbon; utilize illuminate\auth\userinterface; utilize illuminate\auth\reminders\remindableinterface; class user extends confideuser implements userinterface, remindableinterface{ utilize hasrole; /** * user username * @param $username * @return mixed */ public function getuserbyusername( $username ) { homecoming $this->where('username', '=', $username)->first(); } public function joined() { homecoming string::date(carbon::createfromformat('y-n-j g:i:s', $this->created_at)); } public function saveroles($inputroles) { if(! empty($inputroles)) { $this->roles()->sync($inputroles); } else { $this->roles()->detach(); } } public function currentroleids() { $roles = $this->roles; $roleids = false; if( !empty( $roles ) ) { $roleids = array(); foreach( $roles &$role ) { $roleids[] = $role->id; } } homecoming $roleids; } public static function checkauthandredirect($redirect, $ifvalid=false) { // user info $user = auth::user(); $redirectto = false; if(empty($user->id) && ! $ifvalid) // not logged in redirect, set session. { session::put('loginredirect', $redirect); $redirectto = redirect::to('user/login') ->with( 'notice', lang::get('user/user.login_first') ); } elseif(!empty($user->id) && $ifvalid) // valid user, want redirect. { $redirectto = redirect::to($redirect); } homecoming array($user, $redirectto); } public function currentuser() { homecoming (new confide(new confideeloquentrepository()))->user(); } public function getreminderemail() { homecoming $this->email; } }

role:

<?php utilize zizaco\entrust\entrustrole; class role extends entrustrole { public function validateroles( array $roles ) { $user = confide::user(); $rolevalidation = new stdclass(); foreach( $roles $role ) { // create sure theres valid user, check role. $rolevalidation->$role = ( empty($user) ? false : $user->hasrole($role) ); } homecoming $rolevalidation; } }

permission:

<?php utilize zizaco\entrust\entrustpermission; class permission extends entrustpermission { public function preparepermissionsfordisplay($permissions) { // available permissions $availablepermissions = $this->all()->toarray(); foreach($permissions &$permission) { array_walk($availablepermissions, function(&$value) use(&$permission){ if($permission->name == $value['name']) { $value['checked'] = true; } }); } homecoming $availablepermissions; } /** * convert input array savable array. * @param $permissions * @return array */ public function preparepermissionsforsave( $permissions ) { $availablepermissions = $this->all()->toarray(); $preparedpermissions = array(); foreach( $permissions $permission => $value ) { // if checkbox selected if( $value == '1' ) { // if permission exists array_walk($availablepermissions, function(&$value) use($permission, &$preparedpermissions){ if($permission == (int)$value['id']) { $preparedpermissions[] = $permission; } }); } } homecoming $preparedpermissions; } }

furthermore, seed database in origin values, hence created follwing seeders:

usertableseeder:

<?php class userstableseeder extends seeder { public function run() { db::table('users')->delete(); $users = array( array( 'username' => 'admin', 'email' => 'admin@example.org', 'password' => hash::make('admin'), 'confirmed' => 1, 'confirmation_code' => md5(microtime().config::get('app.key')), 'created_at' => new datetime, 'updated_at' => new datetime, ), array( 'username' => 'moderator', 'email' => 'moderator@example.org', 'password' => hash::make('moderator'), 'confirmed' => 1, 'confirmation_code' => md5(microtime().config::get('app.key')), 'created_at' => new datetime, 'updated_at' => new datetime, ), array( 'username' => 'user', 'email' => 'user@example.org', 'password' => hash::make('user'), 'confirmed' => 1, 'confirmation_code' => md5(microtime().config::get('app.key')), 'created_at' => new datetime, 'updated_at' => new datetime, ) ); db::table('users')->insert( $users ); } }

rolestableseeder:

<?php class rolestableseeder extends seeder { public function run() { db::table('roles')->delete(); $adminrole = new role; $adminrole->name = 'adminrole'; $adminrole->save(); $standrole = new role; $standrole->name = 'userrole'; $standrole->save(); $modrole = new role; $modrole->name = 'modrole'; $modrole->save(); $user = user::where('username','=','admin')->first(); $user->attachrole( $adminrole ); $user = user::where('username','=','user')->first(); $user->attachrole( $standrole ); $user = user::where('username','=','moderator')->first(); $user->attachrole( $modrole ); } }

permissionstableseeder:

<?php class permissionstableseeder extends seeder { public function run() { db::table('permissions')->delete(); $permissions = array( array( // 1 'name' => 'manage_users', 'display_name' => 'manage users' ), array( // 2 'name' => 'manage_roles', 'display_name' => 'manage roles' ), array( // 3 'name' => 'standart_user_role', 'display_name' => 'standart_user_role' ), ); db::table('permissions')->insert( $permissions ); db::table('permission_role')->delete(); $role_id_admin = role::where('name', '=', 'admin')->first()->id; $role_id_mod = role::where('name', '=', 'moderator')->first()->id; $role_id_stand = role::where('name', '=', 'user')->first()->id; $permission_base = (int)db::table('permissions')->first()->id - 1; $permissions = array( array( 'role_id' => $role_id_admin, 'permission_id' => $permission_base + 1 ), array( 'role_id' => $role_id_admin, 'permission_id' => $permission_base + 2 ), array( 'role_id' => $role_id_mod, 'permission_id' => $permission_base + 1 ), array( 'role_id' => $role_id_mod, 'permission_id' => $permission_base + 3 ), array( 'role_id' => $role_id_stand, 'permission_id' => $permission_base + 3 ), ); db::table('permission_role')->insert( $permissions ); } }

however, when running db:seed:

$ php artisan db:seed ************************************** * application in production! * ************************************** wish run command? y seeded: userstableseeder {"error":{"type":"symfony\\component\\debug\\exception\\fatalerrorexception","me ssage":"class user cannot extend trait zizaco\\confide\\confideuser","file" :"c:\\xampp\\htdocs\\laravel_project\\laravel-application\\app\\models\\user.php","line ":11}}

any recommendations doing wrong in seeding?

i appreciate answers!

update

after changing usermodel next exception:

$ php artisan db:seed ************************************** * application in production! * ************************************** wish run command? y seeded: userstableseeder {"error":{"type":"symfony\\component\\debug\\exception\\fatalerrorexception","me ssage":"call undefined method user::where()","file":"c:\\xampp\\htdocs\\larav el_project\\laravel-application\\app\\database\\seeds\\rolestableseeder.php","line":21} }

update 2

when changing user model to(as @marcinnabiaƂek proposed):

class user extends eloquent implements userinterface, remindableinterface{ utilize confideuser; utilize hasrole;

i getting next error:

$ php artisan db:seed ************************************** * application in production! * ************************************** wish run command? y seeded: userstableseeder seeded: rolestableseeder [errorexception] trying property of non-object db:seed [--class[="..."]] [--database[="..."]] [--force]

you have clear message here - cannot extend trait (message clear plenty think: class user cannot extend trait zizaco\confide\confideuser).

instead of:

class user extends confideuser implements userinterface, remindableinterface{ utilize hasrole;

you should use:

class user implements userinterface, remindableinterface{ utilize confideuser; utilize hasrole;

edit

class user should extend eloquent (this set default) should be:

class user extends eloquent implements userinterface, remindableinterface{ utilize confideuser; utilize hasrole;

php laravel laravel-4 seeding

No comments:

Post a Comment