@@ -8,6 +8,7 @@ use Illuminate\Support\Facades\Log; | |||||
use Illuminate\Support\Facades\Hash; | use Illuminate\Support\Facades\Hash; | ||||
use Illuminate\Auth\Events\Registered; | use Illuminate\Auth\Events\Registered; | ||||
use Illuminate\Support\Facades\Password; | use Illuminate\Support\Facades\Password; | ||||
use Illuminate\Support\Facades\Auth; | |||||
class UserController extends Controller | class UserController extends Controller | ||||
{ | { | ||||
@@ -42,14 +43,13 @@ class UserController extends Controller | |||||
if ($status === Password::RESET_LINK_SENT) { | if ($status === Password::RESET_LINK_SENT) { | ||||
return response()->json([ | return response()->json([ | ||||
"status" => "success" | "status" => "success" | ||||
]) | |||||
]); | |||||
} else { | } else { | ||||
return response()->json($errors->all()) | |||||
return response()->json($errors->all()); | |||||
} | } | ||||
} | } | ||||
public function resetPassword(Request $request) { | public function resetPassword(Request $request) { | ||||
$request->validate([ | $request->validate([ | ||||
'token' => 'required', | 'token' => 'required', | ||||
'email' => 'required|email', | 'email' => 'required|email', | ||||
@@ -62,7 +62,7 @@ class UserController extends Controller | |||||
function ($user, $password) use ($request) { | function ($user, $password) use ($request) { | ||||
$user->forceFill([ | $user->forceFill([ | ||||
'password' => Hash::make($password) | 'password' => Hash::make($password) | ||||
])->setRememberToken(Str::random(60)) | |||||
])->setRememberToken(Str::random(60)); | |||||
}); | }); | ||||
if ($status == Password::PASSWORD_RESET) { | if ($status == Password::PASSWORD_RESET) { | ||||
return response()->json([ | return response()->json([ | ||||
@@ -72,4 +72,17 @@ class UserController extends Controller | |||||
return response()->json([__($status)]); | 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"]); | |||||
} | |||||
} | } |
@@ -6,7 +6,6 @@ use Illuminate\Contracts\Auth\MustVerifyEmail; | |||||
use Illuminate\Database\Eloquent\Factories\HasFactory; | use Illuminate\Database\Eloquent\Factories\HasFactory; | ||||
use Illuminate\Foundation\Auth\User as Authenticatable; | use Illuminate\Foundation\Auth\User as Authenticatable; | ||||
use Illuminate\Notifications\Notifiable; | use Illuminate\Notifications\Notifiable; | ||||
use Illuminate\Contracts\Auth\MustVerifyEmail; | |||||
class User extends Authenticatable implements MustVerifyEmail | class User extends Authenticatable implements MustVerifyEmail | ||||
{ | { | ||||
@@ -20,6 +20,7 @@ class CreateUsersTable extends Migration | |||||
$table->timestamp('email_verified_at')->nullable(); | $table->timestamp('email_verified_at')->nullable(); | ||||
$table->string('password'); | $table->string('password'); | ||||
$table->string('role'); | $table->string('role'); | ||||
$table->boolean('active'); | |||||
$table->bigInteger('credits'); | $table->bigInteger('credits'); | ||||
$table->rememberToken(); | $table->rememberToken(); | ||||
$table->timestamps(); | $table->timestamps(); | ||||
@@ -4,7 +4,6 @@ let registerToggles = document.querySelectorAll(".register-btn, .register-area . | |||||
const passInput = document.getElementById("password"); | const passInput = document.getElementById("password"); | ||||
const passInput2 = document.getElementById("confirm_password"); | const passInput2 = document.getElementById("confirm_password"); | ||||
let token = getCookie("XSRF-TOKEN"); | let token = getCookie("XSRF-TOKEN"); | ||||
console.log(document.getElementById("register-name")); | |||||
function register(event) { | function register(event) { | ||||
fetch("/sanctum/csrf-cookie", { | fetch("/sanctum/csrf-cookie", { | ||||
method: "GET" | method: "GET" | ||||
@@ -20,11 +19,12 @@ function register(event) { | |||||
name: document.getElementById("register-name").value, | name: document.getElementById("register-name").value, | ||||
email: document.getElementById("register-email").value, | email: document.getElementById("register-email").value, | ||||
password: document.getElementById("register-password").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(); | event.preventDefault(); | ||||
} | } | ||||
@@ -40,6 +40,28 @@ function checkPasswords() { | |||||
passInput2.setCustomValidity(""); | 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() { | toggle.addEventListener("click", function() { | ||||
heroText.forEach((item) => { | heroText.forEach((item) => { | ||||
item.classList.toggle("hidden"); | item.classList.toggle("hidden"); | ||||
@@ -59,6 +81,7 @@ for (i = 0; i < cols.length; i++) { | |||||
}); | }); | ||||
} | } | ||||
document.getElementById("register-form").addEventListener("submit", register); | document.getElementById("register-form").addEventListener("submit", register); | ||||
document.getElementById("login_form").addEventListener("submit", login); | |||||
passInput2.oninput = checkPasswords; | passInput2.oninput = checkPasswords; | ||||
passInput.oninput = checkPasswords; | passInput.oninput = checkPasswords; | ||||
//# sourceMappingURL=main.js.map | //# sourceMappingURL=main.js.map |
@@ -5,7 +5,6 @@ let registerToggles = document.querySelectorAll(".register-btn, .register-area\ | |||||
const passInput = document.getElementById("password") | const passInput = document.getElementById("password") | ||||
const passInput2 = document.getElementById("confirm_password") | const passInput2 = document.getElementById("confirm_password") | ||||
let token = getCookie('XSRF-TOKEN') | let token = getCookie('XSRF-TOKEN') | ||||
console.log(document.getElementById("register-name")) | |||||
function register(event) { | function register(event) { | ||||
fetch("/sanctum/csrf-cookie", { | fetch("/sanctum/csrf-cookie", { | ||||
@@ -24,7 +23,6 @@ function register(event) { | |||||
console.log('sent registration'); | console.log('sent registration'); | ||||
console.log(response.json()) | console.log(response.json()) | ||||
}); | }); | ||||
}) | |||||
event.preventDefault(); | 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() { | toggle.addEventListener("click", function() { | ||||
heroText.forEach(item => { | heroText.forEach(item => { | ||||
item.classList.toggle("hidden") | item.classList.toggle("hidden") | ||||
@@ -70,5 +87,6 @@ for (i = 0; i < cols.length; i++) { | |||||
} | } | ||||
document.getElementById('register-form').addEventListener('submit', register) | document.getElementById('register-form').addEventListener('submit', register) | ||||
document.getElementById('login_form').addEventListener('submit', login) | |||||
passInput2.oninput = checkPasswords | passInput2.oninput = checkPasswords | ||||
passInput.oninput = checkPasswords | passInput.oninput = checkPasswords |
@@ -17,16 +17,16 @@ | |||||
<img src="/images/arrow-up.svg" height="30px" alt=""> | <img src="/images/arrow-up.svg" height="30px" alt=""> | ||||
</a> | </a> | ||||
@guest | @guest | ||||
<form class= 'login' method='POST'> | |||||
<form id='login_form' class= 'login' method='POST'> | |||||
@csrf | @csrf | ||||
<div> | <div> | ||||
<label for='sender_email'>Email</label> | <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'> | spellcheck='false'> | ||||
</div> | </div> | ||||
<div> | <div> | ||||
<label for='sender_password'>Password</label> | <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> | </div> | ||||
<button class='login-btn'type="login">Log in</button> | <button class='login-btn'type="login">Log in</button> | ||||
</form> | </form> | ||||
@@ -4,6 +4,7 @@ use Illuminate\Support\Facades\Route; | |||||
use App\Http\Controllers\UserController; | use App\Http\Controllers\UserController; | ||||
use Illuminate\Foundation\Auth\EmailVerificationRequest; | use Illuminate\Foundation\Auth\EmailVerificationRequest; | ||||
use Illuminate\Http\Request; | use Illuminate\Http\Request; | ||||
use Illuminate\Support\Facades\Auth; | |||||
/* | /* | ||||
|-------------------------------------------------------------------------- | |-------------------------------------------------------------------------- | ||||
@@ -17,11 +18,13 @@ use Illuminate\Http\Request; | |||||
*/ | */ | ||||
Route::get('/', function () { | Route::get('/', function () { | ||||
if (Auth::check()) { | |||||
return redirect('panel'); | |||||
} | |||||
return view('home'); | return view('home'); | ||||
})->name('login'); | })->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', | Route::view('/verify-email', | ||||
'verify-email')->middleware('auth')->name('verification.notice'); | 'verify-email')->middleware('auth')->name('verification.notice'); | ||||
@@ -51,4 +54,8 @@ Route::get('/reset-password/{token}', function ($token) { | |||||
})->middleware('guest')->name('password.reset'); | })->middleware('guest')->name('password.reset'); | ||||
Route::post('/reset-passowrd', [UserController::class, | Route::post('/reset-passowrd', [UserController::class, | ||||
'resetPassword'])->middleware('guest')->name('password.email'); | |||||
'resetPassword'])->middleware('guest'); | |||||
Route::post('/login', [UserController::class, | |||||
'login']); | |||||