barantr90 wrote:Merhaba,
Bildiğim kadarıyla laravel in böyle bir kolaylığı yok.
Role'ler ataman lazım çünkü. Veritabanını ona göre şekillendirmen gerek.
Aslında var. Daha doğrusu varmış
İşine yarayabilecek olanlar için kısa bir anlatım yapayım.
2 adet model dosyam var biri User diğeri Admin.
User modeli ;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
}
Admin modeli ;
use Illuminate\Foundation\Auth\User as Authenticatable;
class Admin extends Authenticatable
{
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'admins';
protected $fillable = [
'name', 'email', 'password',
];
protected $hidden = [
'password', 'remember_token',
];
}
config/app.php dosyasının içeriğini şu şekilde değiştirdim.
'defaults' => [
'guard' => 'user',
'passwords' => 'user',
],
'guards' => [
'user' => [
'driver' => 'session',
'provider' => 'user',
],
'admin' => [
'driver' => 'session',
'provider' => 'admin',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
],
'providers' => [
'user' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'admin' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
],
],
'passwords' => [
'user' => [
'provider' => 'user',
'email' => 'auth.emails.password',
'table' => 'password_resets',
'expire' => 60,
],
'admin' => [
'provider' => 'admin',
'email' => 'auth.emails.password',
'table' => 'password_resets',
'expire' => 60,
]
],
Route tanımlamasını şu şekilde yapıyorsunuz;
Route::group(['middleware' => 'admin'], function () {
Route::controller('settings', 'SettingController');
);
Daha sonra iki adet middleware oluşturuyorsunuz. AdminAuthenticate ve UserAuthenticate
Bunu oluşturmamdaki amaç giriş yapılmamışsa admini farklı kullanıcıyı kısımlara yönlendirmek (farklı bir yöntemi var mı bilmiyorum.)
Daha sonra Kernel.php dosyasını şu şekilde düzenledim.
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class
];
protected $middlewareGroups = [
'user' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\App\Http\Middleware\UserAuthenticate::class,
],
'admin' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\App\Http\Middleware\AdminAuthenticate::class,
],
'api' => [
'throttle:60,1',
],
];
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
];
Admin veya user için giriş kontrolü yapıp bilgileri almak için şu şekilde kullanıyorsunuz;
if(Auth::guard('admin')->check()){
var_dump(auth()->guard('admin')->user()->toArray());
}
if(Auth::guard('user')->check()){
var_dump(auth()->guard('user')->user()->toArray());
}
View kısmında şu şekilde
Frontend kısmında üyenin bilgileri için;
Üye e-postasını almak için : {{Auth::guard('user')->user()->email}}
Admin kısmında admin bilgilerini almak için bu şekilde kullanabilirsiniz.
Admin e-postasını almak için : {{Auth::guard('admin')->user()->email}}
Kolay gelsin.