Giriş yapmadınız.

Duyuru

TÜRKÇE KİTAP DUYURUSU:
Laravel 5 : Laravel 5.1 Güzelliği (Türkçe)
Vue.js 2 : Vue.js 2 Majesteleri (Türkçe)

#1 07.01.2019 14:47:23

Kevin-Mitnick
Üye
Kayıtlı: 26.05.2016
Mesajlar: 426

Profil Doğrulamadan İşlem Yapamama

User ve profile adında iki tablom var kullanıcı girişi yapıyor . Ama sitenin kullanılması için profili mutlaka doldurması şart başka yere erişimi olmamalı . Bunun için nasıl bir yöntem izlemeliyim ?

Profile yarım kalsa bile "Üzgünüz Profilinizi Tamamlayınız demem lazım"

Middleware aklıma geldi fakat yazdıktan sonra bunu hangi routa ekliyecem ona karar veremedim.

Teşekkürler.


Mister Koder

Çevrimdışı

#2 07.01.2019 14:59:52

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,420
Website

Yanıt: Profil Doğrulamadan İşlem Yapamama

Profil sayfası hariç kullanıcının erişiminde olan tüm rotalara ekleyeceksiniz, yani auth olan her rotaya. Middleware içerisinde ise profile rotasına izin vereceksiniz.

if ($request->routeIs('profile')) {
    return $next($request);
}

// Buradan itibaren kullanıcının profili doğru mu değil mi kontrol edip işlem yaptıracaksınız

Çevrimdışı

#3 07.01.2019 15:41:11

Kevin-Mitnick
Üye
Kayıtlı: 26.05.2016
Mesajlar: 426

Yanıt: Profil Doğrulamadan İşlem Yapamama

@mgsmus hocam teşekkür ediyorum sayende ->routeIs ide öğrenmiş oldum.

public function handle($request, Closure $next)
    {

        if ($request->routeIs('tercuman-profile')) {
            return $next($request);
        }

        $user_profile = Profile::where('user_id',\Auth::user()->id)->first();

        if(empty($user_profile)){
            return redirect()->route('tercuman-profile')->with('hata','Diğer Alanlara Erişim İçin Profilinizi Doldurunuz');
        }

        return $next($request);

    }

böyle birşey yazdım sayende hocam şuan çalışıyor tabloda profil yoksa geri atıyorum message bastırıyorum. Teşekkür ediyorum tekrardan.


Mister Koder

Çevrimdışı

#4 07.01.2019 16:38:14

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,420
Website

Yanıt: Profil Doğrulamadan İşlem Yapamama

if ($request->is('tercuman-profile/*')) {
    return $next($request);
}

Bu şekilde pattern de kullanabilirsiniz. Üstteki mesela aşağıdaki tüm rotaları yakalayacaktır:

tercuman-profile
tercuman-profile/profile
tercuman-profile/1/profile
tercuman-profile/edit
...

Ayrıca Request objesi giriş yapmış kullanıcıyı da içerir. Yani \Auth::user()->id yerine $request->user()->id kullanabilirsiniz.

User ile Profile arasında profile adı altında hasOne ilişkisi de kurduysanız:

$user_profile = $request->user()->profile;

Bu durumda temiz hali:

if ($request->is('tercuman-profile/*')) {
    return $next($request);
}

if(!$request->user()->profile()->exists()){
    return redirect()->route('tercuman-profile')->with('hata','Diğer Alanlara Erişim İçin Profilinizi Doldurunuz');
}

return $next($request);

Çevrimdışı

#5 08.01.2019 09:46:31

Kevin-Mitnick
Üye
Kayıtlı: 26.05.2016
Mesajlar: 426

Yanıt: Profil Doğrulamadan İşlem Yapamama

@mgsmus hocam sağolun şu temiz kullanımlarda hala iyi değilim smile


Mister Koder

Çevrimdışı

#6 08.01.2019 10:12:29

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,420
Website

Yanıt: Profil Doğrulamadan İşlem Yapamama

Öyleyse şimdilik \Illuminate\Http\Request gördüğünüz yerde Auth::user() yerine $request->user() kullanabileceğiniz aklınızda olsun smile

Çevrimdışı

Forum alt kısmı