Basic design created
This commit is contained in:
21
app/Domains/UserManagement/Controllers/LogOutController.php
Normal file
21
app/Domains/UserManagement/Controllers/LogOutController.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace App\Domains\UserManagement\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class LogOutController {
|
||||
public function __invoke(Request $request) {
|
||||
Auth::logout();
|
||||
|
||||
// Session invalidieren
|
||||
$request->session()->invalidate();
|
||||
|
||||
// CSRF-Token regenerieren (für Sicherheit)
|
||||
$request->session()->regenerateToken();
|
||||
|
||||
// Redirect z.B. zur Login-Seite
|
||||
return redirect()->intended('/')->with('status', 'Erfolgreich abgemeldet!');
|
||||
}
|
||||
}
|
||||
51
app/Domains/UserManagement/Controllers/LoginController.php
Normal file
51
app/Domains/UserManagement/Controllers/LoginController.php
Normal file
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
namespace App\Domains\UserManagement\Controllers;
|
||||
|
||||
use App\Providers\InertiaProvider;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class LoginController {
|
||||
public function loginForm(Request $request) {
|
||||
$errors = [];
|
||||
|
||||
if ($request->session()->has('errors')) {
|
||||
$errors = $request->session()->get('errors')->getBag('default')->getMessages();
|
||||
}
|
||||
|
||||
|
||||
$inertiaProvider = new InertiaProvider('UserManagement/Login', ['errors' => $errors, 'appName' => app('tenant')->name]);
|
||||
return $inertiaProvider->render();
|
||||
}
|
||||
|
||||
public function doLogin(Request $request)
|
||||
{
|
||||
|
||||
$credentials = $request->validate([
|
||||
'username' => ['required', 'string'],
|
||||
'password' => ['required'],
|
||||
],
|
||||
[
|
||||
'username.required' => 'Bitte gib deinen Anmeldenamen ein.',
|
||||
'username.string' => 'Der Anmeldename muss eine E-Mail-Adresse sein.',
|
||||
'password.required' => 'Bitte gib dein Passwort ein.',
|
||||
]);
|
||||
|
||||
#$credentials = ['username' => 'development', 'password' => 'development'];
|
||||
|
||||
if (!Auth::attempt($credentials)) {
|
||||
return back()->withErrors([
|
||||
'username' => 'Diese Zugangsdaten sind ungültig.',
|
||||
]);
|
||||
}
|
||||
|
||||
$request->session()->regenerate();
|
||||
$user = Auth::user();
|
||||
|
||||
|
||||
# dd($user->firstname . ' ' . $user->lastname);
|
||||
|
||||
return redirect()->intended('/');
|
||||
}
|
||||
}
|
||||
64
app/Domains/UserManagement/Views/Login.vue
Normal file
64
app/Domains/UserManagement/Views/Login.vue
Normal file
@@ -0,0 +1,64 @@
|
||||
<script setup>
|
||||
import AppLayout from '../../../../resources/js/layouts/AppLayout.vue'
|
||||
import {onMounted, ref} from 'vue'
|
||||
import { toast } from 'vue3-toastify'
|
||||
import ShadowedBox from "../../../Views/Components/ShadowedBox.vue";
|
||||
|
||||
|
||||
const props = defineProps({
|
||||
navbar: Object,
|
||||
tenant: String,
|
||||
user: Object,
|
||||
currentPath: String,
|
||||
errors: Object,
|
||||
})
|
||||
|
||||
|
||||
onMounted(() => {
|
||||
if (undefined !== props.errors && undefined !== props.errors.username) {
|
||||
toast.error(props.errors.username[0])
|
||||
}
|
||||
})
|
||||
|
||||
//console.log(props.errors.password[0])
|
||||
const username = ref('')
|
||||
const password = ref('')
|
||||
|
||||
const csrfToken = document.querySelector('meta[name="csrf-token"]').getAttribute('content')
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<AppLayout title='Anmelden' :user="props.user" :navbar="props.navbar" :tenant="props.tenant" :currentPath="props.currentPath">
|
||||
<form method="POST" action="/login">
|
||||
<input type="hidden" name="_token" :value="csrfToken" />
|
||||
<shadowed-box style="width: 50%; margin: 150px auto; padding: 20px;">
|
||||
<table>
|
||||
<tr>
|
||||
<th>Anmeldename</th>
|
||||
<td>
|
||||
<input type="text" name="username" id="username"></input>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>Passwort</th>
|
||||
<td><input type="password" name="password" id="password"></input></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<input type="submit" value="Anmelden" style="margin-top: 20px;" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</shadowed-box>
|
||||
</form>
|
||||
</AppLayout>
|
||||
</template>
|
||||
|
||||
<style>
|
||||
th {
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
</style>
|
||||
Reference in New Issue
Block a user