hemen login ve register controller oluşturuyoruz. login içine;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
public function login(Request $request) { $request->validate([ 'email' => ['required', 'email'], 'password' => ['required'] ]); if (Auth::attempt($request->only('email', 'password'),true)){ return response()->json(Auth::user(), 200); } throw ValidationException::withMessages([ 'email' =>['The provided credentials are incorect.'] ]); } public function logout() { Auth::logout(); return redirect('/'); } |
register
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public function register(Request $request) { $request->validate([ 'name' => ['required'], 'email' => ['required', 'email', 'unique:users'], 'password' =>['required', 'min:6', 'confirmed'] ]); User::create([ 'name' => $request->name, 'email' => $request->email, 'password' => Hash::make($request->password) ]); } |
api.php
1 2 3 4 5 6 7 |
Route::middleware('auth:sanctum')->get('/authenticated', function () { return true; }); Route::post('register', 'App\Http\Controllers\RegisterController@register'); Route::post('login', 'App\Http\Controllers\LoginController@login'); Route::post('logout', 'App\Http\Controllers\LoginController@logout')->name("logout"); |
routes.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
{ path: "/platform-users", name: "PlatformUsersIndex", component: PlatformUsersIndex, meta: { title: 'Platform Üyeleri', description:"Deneme", isLogin:true, isAdmin:true, }, }, { path: '/register', component: Register, meta: { title: 'Register', } }, { path: '/login', component: Login, name: 'Login', meta: { title: 'Login', } }, |
app.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
const router = new VueRouter({ mode: "history", routes: routes }); router.beforeEach((to, from, next) => { if(to.path == "/login" || to.path == "/register"){ axios.get('/api/authenticated').then(()=>{ return next({ name: 'PlatformUsersIndex'}) }).catch(()=>{ next() }) } if(to.meta.isLogin == true){ axios.get('/api/authenticated').then(()=>{ next() }).catch(()=>{ return next({ name: 'Login'}) }) } document.title = to.meta.title next(); }) const app = new Vue({ el: "#app", router: router }); |