За последние 24 часа нас посетили 18055 программистов и 1607 роботов. Сейчас ищут 1386 программистов ...

Валидация и аунтификация

Тема в разделе "Laravel", создана пользователем Dimon2x, 19 май 2018.

  1. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    PHP:
    1.     public function getIsAdminAttribute()
    2.     {
    3.         return $this->role === 1;
    4.         //return $this->role === "admin";
    5.     }
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    Для этого и придумали middleware.
    PHP:
    1. class AdminOnlyMiddleware {
    2.     public function handle($request, Closure $next) {
    3.          $user = Auth::user();
    4.          if ($user->role !== "admin") {
    5.              abort(403);
    6.          }
    7.          return $next($request);
    8.     }
    9. }
    И вешаешь его на роуты, которые доступны только админу. Только отлаживай сам, я о твоей структуре БД cужу только по твоим странным фрагментам кода.
    --- Добавлено ---
    Ты в доке что-то кроме примеров кода читаешь?
     
  3. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    @nospiou почему цифрой, а не текстом?
    --- Добавлено ---
    @mkramer многое читаю
     
  4. S_t_e_e_p

    S_t_e_e_p Активный пользователь

    С нами с:
    12 июл 2012
    Сообщения:
    181
    Симпатии:
    4
    Еще можно в AppServiceProvider создать директивы чтобы использовать в шаблонах blade

    PHP:
    1. Blade::if('admin', function () {
    2.     return auth()->check() && auth()->user()->isAdmin();
    3. });
    и уже в шаблонах писать

    HTML:
    1.  
    2. @admin
    3.     Видит только админ
    4. @endadmin
    5.  
     
  5. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    @mkramer а как потом в шаблон передать эту роль?
     
  6. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Это вопрос к @MouseZver почему то enum использовать не принято. Немного медленнее немного менее маштабируемо
    PHP:
    1. @if($user->isAdmin)
    2.     <span>@lang("admin")</span>
    3. @endif
     
  7. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    @nospiou

    Код (Text):
    1. syntax error, unexpected '<' (View:
    Код (Text):
    1. <?php echo e(<?php if($user->isAdmin): ?>); ?>
     
  8. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Ну у тебя повторяется дважды <?php ?>
     
  9. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    @Dimon2x, ты смешиваешь разные задачи. Что тебе конкретно надо, ограничить доступ неадминов к роутам, или не выводить не админам какой-то контент?
     
  10. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    @nospiou это я знаю что повторяется, это из-за этого кода

    PHP:
    1. @if($user->isAdmin)
    2.     <span>@lang("admin")</span>
    3. @endif
     
  11. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    @lang("app.admin") + файл перевода. Зря им не пользуешься. Ну а на счет вопроса к @mkramer если у тебя мидлвера и страница доступна только админу то ты без проверок уже можешь писать админ.
     
  12. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    @mkramer Сначала хочу, что бы выводило, к какой группе относится пользователь
     
  13. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Наверное рано скопировал. Я правил этот код. Давно blade не пользовался. Как по мне должно работать
     
  14. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    PHP:
    1. public function getRoleNameAttribute()
    2.     {
    3.         if($this->role === "admin") return trans("admin");
    4.         elseif($this->role === "user") return trans("user");
    5.         else return trans("UFO");
    6.     }
    7.  
    8. // blade
    9. <span>{{$user->role_name}}</span>
     
    Dimon2x нравится это.