Uwierzytelnianie bez aristana - Laravel 5.2

0

Witam.
Laravel oferuje gotowe skrypty logowania i rejestracji, dzięki którym można w prosty sposób nadać uprawnienia admina i userów.

Lecz jak to wykonać bez tego skryptu?
Stworzyłem własne panele logowania i rejestracji. Logowanie nadaje już sesję do danego użytkownika, lecz rozmyślam nad sposobem właśnie nadania uprawnień.

2

Po pierwsze korzystaj z Auth a nie twórz własnych sesji, po drugie do uprawnień wykorzystaj middlewary w nich sprawdzisz, czy ta osoba ma uprawnienia do danego miejsca. A daną role usera trzymaj w jakieś tabeli i tyle.

0

Dziękuje, o takie informacje Mi chodziło.

0

Co robię źle? Przechodząc po zalogowaniu na podstronę users, wyświetla się 'Błąd' czyli nie widzi Autha usera... Proszę o naprowadzenie czego nie mam..
router.php

 Route::get('users', ['middleware' => 'auth', function()
{
	
}]);
Skrypt logowania:
<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\DB;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
use App\Rejestracja;
use Validate;
use Auth;




class DodajController extends Controller

	public function logowanie(Request $request)
	{
	
		
		
		$nick = $request->input('nick');
		$haslo = $request->input('haslo');
		$sprawdz = DB::table('uzytkownicy')->where(['nick'=>$nick,
			'haslo'=>$haslo])->get();
		$this->validate($request, [
				'nick'            => 'required|max:255',
				'haslo'           => 'required|max:255',

		]);
		
		if(count($sprawdz)>0)
		{
			Auth::user($nick);
			//Auth::guest()->name;
			return view('users');

		}
		else
		{
			echo 'Błędne dane!';
		}

		
	
	}

users.php

if (Auth::check()) 
{ 
	
echo 'You are logged in'; 
}
else {
	echo 'błąd';

Dodam jeszcze skryptu autha
Authentiace.php

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Contracts\Auth\Guard;

class Authenticate
{
    /**
     * The Guard implementation.
     *
     * @var Guard
     */
    protected $auth;

    /**
     * Create a new filter instance.
     *
     * @param  Guard  $auth
     * @return void
     */
    public function __construct(Guard $auth)
    {
        $this->auth = $auth;
    }

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if ($this->auth->guest()) {
            if ($request->ajax()) {
                echo 'Nie masz uprawnień do oglądania tej strony!';
            } else {
                return redirect()->guest('/');
            }
        }
        
        

        return $next($request);
    }
}
 

kernel.php

<?php

namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel
{
    /**
     * The application's global HTTP middleware stack.
     *
     * @var array
     */
    protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
    ];

    /**
     * The application's route middleware.
     *
     * @var array
     */
    protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
    	'admin' => \App\Http\Middleware\Admin::class,
    ];
}

RedirectIfAuthenticated.php

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Contracts\Auth\Guard;

class RedirectIfAuthenticated
{
    /**
     * The Guard implementation.
     *
     * @var Guard
     */
    protected $auth;

    /**
     * Create a new filter instance.
     *
     * @param  Guard  $auth
     * @return void
     */
    public function __construct(Guard $auth)
    {
        $this->auth = $auth;
    }

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if ($this->auth->check()) {
            return redirect('/home');
        }

        return $next($request);
    }
}
 
0

Po przejżeniu pierwszych linijek

DB::table('uzytkownicy') ??? powinieneś stworzyć model Users, każda tabela powinna mieć swój model. I dlaczego nazwa tabelki po polsku???
Auth.login($user) nie nick! gdzie $user to obiekt będący instancją modelu Users.

0

To nie mam instancji utworzonej, bo nie widzi Mi zmiennej $user;
Zrobione.

Do DodajController dodałem
use App\User;

W funkcji logowania, faktycznie brakowało instancji:
$user = new User();
Auth::login($user);

Mam jeszcze jedno pytanie, jak mogę wyświetlić auth zalogowanego użytkownika na stronie users.
Wpisuję :

if (Auth::check()) 
{ 
	echo 'Welcome to your ADMINISTRATOR page '. Auth::user()->name .'.';
}
else {
	echo 'błąd';

Ale wyświetla się tylko napis Welcome to your ADMINISTRATOR page .

0

i co ci daje te new Users() ? wiesz w ogóle co to robi i czego potrzebujesz?

powinieneś mieć

$haslo = $request->input('haslo')

$user = Users::where('nick'=>$nick)->first();

if ($user && Hash::check($haslo , $user->haslo)) {
   Auth::login($user);
}

zanalizuj sobie ten kod

0

Do $hasło przypisz wpisane hasło. W pliku User.php znajduje się nazwa bazy oraz pola, z których klasa User bierze informacje.
Do zmiennej $User przypisz nick(jeśli jest prawidłowy-prawidłowość sprawdza poprzez informacje umieszczone w klasie User).
Jeżeli zmienna $user zawiera nick pasujący do wpisanego hasła, utwórz auth z zmienną przypisaną do $user.
Hash::check sprawdza zahashowane hasło.

Jednego nie rozumiem, gdzie jest zdefiniowane login przy auth ?

0

To będziesz musiał wrócić jeszcze raz od początku, bo standardowy mechanizm rejestracji i logowania to się w L5 generuje artisanem i zostanie wygenerowane to co trzeba

php artisan make:auth

https://laravel.com/docs/5.3/authentication

A co do sprawdzania ról (i jeszcze odpowiednich uprawnień) to instalowałem np. to:
https://github.com/romanbican/roles

ale bez pewnych przeróbek w kodzie powyższe nie działało ze względu na jakiś konflikt z kompatybilnością.

1 użytkowników online, w tym zalogowanych: 0, gości: 1