From 25c75087bb961d676b606a9e4a459ebf437738fc Mon Sep 17 00:00:00 2001 From: Sockenklaus Date: Mon, 3 Jul 2023 22:27:07 +0200 Subject: [PATCH] working on AuthController --- app/Controllers/Http/AuthController.ts | 37 ++++++++++++++++++- app/Controllers/Http/EventsController.ts | 4 +- app/Controllers/Http/UsersController.ts | 27 ++++++++++++-- .../Events/{EventForm.vue => Create.vue} | 0 .../Events/{EventsIndex.vue => Index.vue} | 0 resources/js/pages/Login.vue | 20 +++++----- .../pages/Users/{UserForm.vue => Create.vue} | 0 .../pages/Users/{UsersIndex.vue => Index.vue} | 0 start/routes.ts | 5 ++- 9 files changed, 77 insertions(+), 16 deletions(-) rename resources/js/pages/Events/{EventForm.vue => Create.vue} (100%) rename resources/js/pages/Events/{EventsIndex.vue => Index.vue} (100%) rename resources/js/pages/Users/{UserForm.vue => Create.vue} (100%) rename resources/js/pages/Users/{UsersIndex.vue => Index.vue} (100%) diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index 0205b7b..fc7574d 100644 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -1,3 +1,36 @@ -// import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' +import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' +import { schema } from '@ioc:Adonis/Core/Validator' +import Logger from '@ioc:Adonis/Core/Logger' -export default class AuthController {} +export default class AuthController { + public async login({ auth, request, session, response }: HttpContextContract){ + + const { username, password } = request.all() + /*const loginSchema = schema.create({ + username: schema.string({trim: true}), + password: schema.string() + }) + + const { username, password } = await request.validate({ + schema: loginSchema, + messages: { + required: 'This field is required' + } + })*/ + + try { + await auth.attempt(username, password) + + response.redirect('/events') + } catch (error) { + session.flash("notification", "Login fehlgeschlagen") + response.redirect("/") + } + } + + public async logout({ auth, response }: HttpContextContract) { + await auth.logout() + + response.redirect('/login') + } +} diff --git a/app/Controllers/Http/EventsController.ts b/app/Controllers/Http/EventsController.ts index d92880a..d32d284 100644 --- a/app/Controllers/Http/EventsController.ts +++ b/app/Controllers/Http/EventsController.ts @@ -1,7 +1,9 @@ import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' export default class EventsController { - public async index({}: HttpContextContract) {} + public async index({ inertia }: HttpContextContract) { + return inertia.render('Events/Index') + } public async create({}: HttpContextContract) {} diff --git a/app/Controllers/Http/UsersController.ts b/app/Controllers/Http/UsersController.ts index 242cf1a..dd8dc32 100644 --- a/app/Controllers/Http/UsersController.ts +++ b/app/Controllers/Http/UsersController.ts @@ -1,9 +1,18 @@ import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' +import User from 'App/Models/User' export default class UsersController { - public async index({}: HttpContextContract) {} + public async index({}: HttpContextContract) { - public async create({}: HttpContextContract) {} + } + + public async create({ auth, inertia }: HttpContextContract) { + if(auth.user?.isAdmin) { + inertia.render('Users/Create') + } else { + inertia + } + } public async store({}: HttpContextContract) {} @@ -13,5 +22,17 @@ export default class UsersController { public async update({}: HttpContextContract) {} - public async destroy({}: HttpContextContract) {} + public async destroy({ auth, response, params }: HttpContextContract) { + if (auth.user?.isAdmin){ + const user = await User.findOrFail(params.id) + await user.delete() + .then( + () => { + response.redirect('users.index') + }, + ) + // TODO implement reasonable error handling. + .catch(error => console.log(error)) + } + } } diff --git a/resources/js/pages/Events/EventForm.vue b/resources/js/pages/Events/Create.vue similarity index 100% rename from resources/js/pages/Events/EventForm.vue rename to resources/js/pages/Events/Create.vue diff --git a/resources/js/pages/Events/EventsIndex.vue b/resources/js/pages/Events/Index.vue similarity index 100% rename from resources/js/pages/Events/EventsIndex.vue rename to resources/js/pages/Events/Index.vue diff --git a/resources/js/pages/Login.vue b/resources/js/pages/Login.vue index 438c63c..5d551c1 100644 --- a/resources/js/pages/Login.vue +++ b/resources/js/pages/Login.vue @@ -6,8 +6,8 @@ ref="formRef" :rules="rules" > - - + + @@ -16,26 +16,28 @@ Anmelden +
+ {{ response }} +
\ No newline at end of file diff --git a/resources/js/pages/Users/UserForm.vue b/resources/js/pages/Users/Create.vue similarity index 100% rename from resources/js/pages/Users/UserForm.vue rename to resources/js/pages/Users/Create.vue diff --git a/resources/js/pages/Users/UsersIndex.vue b/resources/js/pages/Users/Index.vue similarity index 100% rename from resources/js/pages/Users/UsersIndex.vue rename to resources/js/pages/Users/Index.vue diff --git a/start/routes.ts b/start/routes.ts index f87130b..6247fc6 100644 --- a/start/routes.ts +++ b/start/routes.ts @@ -19,13 +19,16 @@ */ import Route from '@ioc:Adonis/Core/Route' +import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' Route.get('/', 'HomeController.index') -Route.get('/login', async({inertia}) =>{ +Route.get('/login', async({inertia, response}: HttpContextContract) =>{ return inertia.render('Login') }) +Route.post('login', 'AuthController.login') + Route.resource('users', 'UsersController').middleware({ "*": ['auth'] })