2015-10-17 3 views
0

Я полный стартер с использованием laravel 5.1. Я был разработчиком PHP от 3 до 4 лет, и между теми, с кем я всегда работал с Java EE, и я только что вернулся к PHP environement и нашел полный новый список фреймворков.Laravel 5 и Sentinel 2

После небольшого исследования и использования некоторых результатов опроса я обнаружил, что Laravel является конечным. Теперь я использовал Laragon, чтобы установить его успешно и запустить мое первое новое приложение. Я немного узнаю о том, как работает маршрут, и все в порядке.

Теперь мне нужно использовать Sentinel 2.0, чтобы применить правильные роли/auth к моему приложению, а затем добавить часть socialize.

Так, чтобы сделать это, мне нужно знать несколько вещей:

  • Есть ли способ, чтобы «полностью» избавиться от компонента Auth рядом удаления контроллера Auth папки и маршрута в routes.php?
  • Есть ли учебник (так как я не могу найти) рассказать, как действительно включают сторожевого означает, как создать простое представление со всеми, что ему нужно (контроллер, вары, маршруты ....)

Спасибо

ответ

0

Да, вы можете. Например, это мой код для интерфейса API с JWT и Sentinel.Вы можете посеять свою базу данных с Стража:

Создать ролям

Пример EXA Роль

$role = \Sentinel::getRoleRepository()->createModel()->create([ 
     'name' => 'Example', 
     'slug' => 'EXA', 
    ]); 
    $role->permissions = [ 
     'servicio_dash' => true, 
     'servicio_widget' => true, 
    ]; 
    $role->save(); 

Роль пользователя USR

$role = \Sentinel::getRoleRepository()->createModel()->create([ 
     'name' => 'User', 
     'slug' => 'USR', 
    ]); 
    $role->permissions = [ 
     'servicio_dash' => true, 
     'servicio_widget' =>false, 
    ]; 
    $role->save(); 

Создать 50users и asignate EXA роль (Использование обманщик)

$usr_role = \Sentinel::findRoleBySlug('EXA'); 

    factory(App\User::class, 50)->make()->each(function ($u) use ($usr_role) { 
     \Sentinel::registerAndActivate($u['attributes']); 
    }); 

Bonus Track: Фабрика Пример

$factory->define(App\User::class, function (Faker\Generator $faker) { 
return [ 
    'email' => $faker->safeEmail, 
    'password' => 'p4ssw0rd', 
    'first_name' => $faker->firstName, 
    'last_name' => $faker->lastName, 
    'recycle' => false, 
    'phone' => $faker->phoneNumber, 
    'alt_email' => $faker->email 
]; 

});

Только один пользователь

$yo = factory(App\User::class)->make(['email' => '[email protected]']); 
    \Sentinel::registerAndActivate($yo['attributes']); 


    $jperez = User::where('email', '[email protected]')->firstOrFail(); 
    $epa_role->users()->attach($jperez); 

Аутентифицировать контроллер для API-REST

public function authenticateCredentials(Request $request) 
{ 
    $credentials = $request->only('email', 'password'); 

    $user = \Sentinel::authenticate($credentials); 
    return response()->json($user); 
} 

аутентифицироваться маркера (используйте JWT) и дозорного

public function authenticate(Request $request) 
{ 

    // grab credentials from the request 
    $credentials = $request->only('email', 'password'); 
    try { 
     // attempt to verify the credentials and create a token for the user 
     if (!$token = JWTAuth::attempt($credentials)) { 
     return response()->json(['error' => 'invalid_credentials'], 401); 
    } 
    } catch (JWTException $e) { 
     // something went wrong whilst attempting to encode the token 
     return response()->json(['error' => 'could_not_create_token'], 500); 
    } 
    // all good so return the token 
    return response()->json(compact('token')); 
} 

Примечания: Для этого вам необходимо настроить параметры JWT с настраиваемым поставщиком Auth, вы можете найти этот here

В любом контроллере

public function hasPermission($type) 
{ 
    //$sentinel = \Sentinel::findById(\JWTAuth::parseToken()->authenticate()->id); //->this is for a token 

    $sentinel = \Sentinel::findById(1); //if you now the id 


    if($sentinel->hasAccess([$type])) 
     return response()->json(true, 200); 
    //yout custom handle for noAccess here 
} 
Смежные вопросы