Browse Source

Add login routing

tags/v0.1.0
Immanuel Onyeka 3 years ago
parent
commit
0c2d3aeaa9
7 changed files with 79 additions and 18 deletions
  1. +17
    -4
      app/Http/Controllers/UserController.php
  2. +0
    -1
      app/Models/User.php
  3. +1
    -0
      database/migrations/2014_10_12_000000_create_users_table.php
  4. +28
    -5
      public/main.js
  5. +20
    -2
      resources/js/main.js
  6. +3
    -3
      resources/views/master.blade.php
  7. +10
    -3
      routes/web.php

+ 17
- 4
app/Http/Controllers/UserController.php View File

@@ -8,6 +8,7 @@ use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Hash;
use Illuminate\Auth\Events\Registered;
use Illuminate\Support\Facades\Password;
use Illuminate\Support\Facades\Auth;

class UserController extends Controller
{
@@ -42,14 +43,13 @@ class UserController extends Controller
if ($status === Password::RESET_LINK_SENT) {
return response()->json([
"status" => "success"
])
]);
} else {
return response()->json($errors->all())
return response()->json($errors->all());
}
}

public function resetPassword(Request $request) {

$request->validate([
'token' => 'required',
'email' => 'required|email',
@@ -62,7 +62,7 @@ class UserController extends Controller
function ($user, $password) use ($request) {
$user->forceFill([
'password' => Hash::make($password)
])->setRememberToken(Str::random(60))
])->setRememberToken(Str::random(60));
});
if ($status == Password::PASSWORD_RESET) {
return response()->json([
@@ -72,4 +72,17 @@ class UserController extends Controller
return response()->json([__($status)]);
}
}

public function login(Request $request) {
$credentials = $request->only('email', 'password');

//This should probably be changed to not return a page
if (Auth::attempt($credentials)) {
$request->session()->regenerate();
return response()->json(["status" => "success"]);
}

return response()->json(["status" => "error"]);

}
}

+ 0
- 1
app/Models/User.php View File

@@ -6,7 +6,6 @@ use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;

class User extends Authenticatable implements MustVerifyEmail
{


+ 1
- 0
database/migrations/2014_10_12_000000_create_users_table.php View File

@@ -20,6 +20,7 @@ class CreateUsersTable extends Migration
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->string('role');
$table->boolean('active');
$table->bigInteger('credits');
$table->rememberToken();
$table->timestamps();


+ 28
- 5
public/main.js View File

@@ -4,7 +4,6 @@ let registerToggles = document.querySelectorAll(".register-btn, .register-area .
const passInput = document.getElementById("password");
const passInput2 = document.getElementById("confirm_password");
let token = getCookie("XSRF-TOKEN");
console.log(document.getElementById("register-name"));
function register(event) {
fetch("/sanctum/csrf-cookie", {
method: "GET"
@@ -20,11 +19,12 @@ function register(event) {
name: document.getElementById("register-name").value,
email: document.getElementById("register-email").value,
password: document.getElementById("register-password").value
})
}).then((response2) => {
console.log("sent registration");
console.log(response2.json());
}),
password_confirmation: document.getElementById("confirm-password").value
});
}).then((response) => {
console.log("sent registration");
console.log(response.json());
});
event.preventDefault();
}
@@ -40,6 +40,28 @@ function checkPasswords() {
passInput2.setCustomValidity("");
}
}
function login(event) {
fetch("/sanctum/csrf-cookie", {
method: "GET"
}).then(function(response) {
token = getCookie("XSRF-TOKEN");
fetch("/login", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-XSRF-TOKEN": token
},
body: JSON.stringify({
email: document.getElementById("login_email").value,
password: document.getElementById("login_password").value
})
}).then((response2) => {
console.log("sent login");
console.log(response2.json());
});
});
event.preventDefault();
}
toggle.addEventListener("click", function() {
heroText.forEach((item) => {
item.classList.toggle("hidden");
@@ -59,6 +81,7 @@ for (i = 0; i < cols.length; i++) {
});
}
document.getElementById("register-form").addEventListener("submit", register);
document.getElementById("login_form").addEventListener("submit", login);
passInput2.oninput = checkPasswords;
passInput.oninput = checkPasswords;
//# sourceMappingURL=main.js.map

+ 20
- 2
resources/js/main.js View File

@@ -5,7 +5,6 @@ let registerToggles = document.querySelectorAll(".register-btn, .register-area\
const passInput = document.getElementById("password")
const passInput2 = document.getElementById("confirm_password")
let token = getCookie('XSRF-TOKEN')
console.log(document.getElementById("register-name"))

function register(event) {
fetch("/sanctum/csrf-cookie", {
@@ -24,7 +23,6 @@ function register(event) {
console.log('sent registration');
console.log(response.json())
});
})
event.preventDefault();
}

@@ -42,6 +40,25 @@ function checkPasswords() {
}
}

function login(event) {
fetch("/sanctum/csrf-cookie", {
method: 'GET'
}).then( function(response) {
token = getCookie('XSRF-TOKEN')
fetch("/login", {
method: 'POST',
headers: {'Content-Type': 'application/json',
'X-XSRF-TOKEN': token},
body: JSON.stringify({"email": document.getElementById("login_email").value,
"password": document.getElementById("login_password").value}),
}).then(response => {
console.log('sent login');
console.log(response.json())
});
})
event.preventDefault();
}

toggle.addEventListener("click", function() {
heroText.forEach(item => {
item.classList.toggle("hidden")
@@ -70,5 +87,6 @@ for (i = 0; i < cols.length; i++) {
}

document.getElementById('register-form').addEventListener('submit', register)
document.getElementById('login_form').addEventListener('submit', login)
passInput2.oninput = checkPasswords
passInput.oninput = checkPasswords

+ 3
- 3
resources/views/master.blade.php View File

@@ -17,16 +17,16 @@
<img src="/images/arrow-up.svg" height="30px" alt="">
</a>
@guest
<form class= 'login' method='POST'>
<form id='login_form' class= 'login' method='POST'>
@csrf
<div>
<label for='sender_email'>Email</label>
<input required type='email' name='sender_email' placeholder=''
<input required id='login_email' type='email' name='sender_email' placeholder=''
spellcheck='false'>
</div>
<div>
<label for='sender_password'>Password</label>
<input required type='password' name='sender_password' placeholder='' spellcheck='false'>
<input required id='login_password' type='password' name='sender_password' placeholder='' spellcheck='false'>
</div>
<button class='login-btn'type="login">Log in</button>
</form>


+ 10
- 3
routes/web.php View File

@@ -4,6 +4,7 @@ use Illuminate\Support\Facades\Route;
use App\Http\Controllers\UserController;
use Illuminate\Foundation\Auth\EmailVerificationRequest;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

/*
|--------------------------------------------------------------------------
@@ -17,11 +18,13 @@ use Illuminate\Http\Request;
*/

Route::get('/', function () {
if (Auth::check()) {
return redirect('panel');
}
return view('home');
})->name('login');

Route::view('/panel', 'panel');
Route::view('/panel', 'panel')->middleware([ 'auth', 'verified' ]);
Route::view('/panel', 'panel')->middleware([ 'auth', 'verified' ])->name('panel');

Route::view('/verify-email',
'verify-email')->middleware('auth')->name('verification.notice');
@@ -51,4 +54,8 @@ Route::get('/reset-password/{token}', function ($token) {
})->middleware('guest')->name('password.reset');

Route::post('/reset-passowrd', [UserController::class,
'resetPassword'])->middleware('guest')->name('password.email');
'resetPassword'])->middleware('guest');

Route::post('/login', [UserController::class,
'login']);


Loading…
Cancel
Save