From 21ba7b89c0b185ef1e6878ebd02df21af8c51ed6 Mon Sep 17 00:00:00 2001 From: Michal Kostewicz Date: Sat, 6 Feb 2021 19:55:27 +0100 Subject: Add lastname column to User DB table and update API logic to save,return and update this data. --- app/Controllers/Http/DashboardController.js | 5 +++++ app/Controllers/Http/UserController.js | 19 ++++++++++++------- .../migrations/1612629845398_users_update_schema.js | 20 ++++++++++++++++++++ resources/views/dashboard/account.edge | 8 ++++++++ resources/views/dashboard/data.edge | 6 ++++++ 5 files changed, 51 insertions(+), 7 deletions(-) create mode 100644 database/migrations/1612629845398_users_update_schema.js diff --git a/app/Controllers/Http/DashboardController.js b/app/Controllers/Http/DashboardController.js index 3de4816..2f06961 100644 --- a/app/Controllers/Http/DashboardController.js +++ b/app/Controllers/Http/DashboardController.js @@ -122,6 +122,7 @@ class DashboardController { return view.render('dashboard.account', { username: auth.user.username, email: auth.user.email, + lastname: auth.user.lastname }); } @@ -135,6 +136,7 @@ class DashboardController { let validation = await validateAll(request.all(), { username: 'required', email: 'required', + lastname: 'required' }); if (validation.fails()) { session.withErrors(validation.messages()).flashExcept(['password']); @@ -168,6 +170,7 @@ class DashboardController { // Update user account const { user } = auth; user.username = request.input('username'); + user.lastname = request.input('lastname'); user.email = request.input('email'); if (request.input('password')) { const hashedPassword = crypto.createHash('sha256').update(request.input('password')).digest('base64'); @@ -192,6 +195,7 @@ class DashboardController { return view.render('dashboard.data', { username: general.username, + lastname: general.lastname, mail: general.email, created: general.created_at, updated: general.updated_at, @@ -211,6 +215,7 @@ class DashboardController { const exportData = { username: general.username, + lastname: general.lastname, mail: general.email, services, workspaces, diff --git a/app/Controllers/Http/UserController.js b/app/Controllers/Http/UserController.js index e367d99..dc92b21 100644 --- a/app/Controllers/Http/UserController.js +++ b/app/Controllers/Http/UserController.js @@ -48,9 +48,11 @@ class UserController { // Validate user input const validation = await validateAll(request.all(), { firstname: 'required', + lastname: 'required', email: 'required|email|unique:users,email', password: 'required', }); + if (validation.fails()) { return response.status(401).send({ message: 'Invalid POST arguments', @@ -59,7 +61,7 @@ class UserController { }); } - const data = request.only(['firstname', 'email', 'password']); + const data = request.only(['firstname', 'lastname', 'email', 'password']); // Create user in DB let user; @@ -68,6 +70,7 @@ class UserController { email: data.email, password: data.password, username: data.firstname, + lastname: data.lastname, }); } catch (e) { return response.status(401).send({ @@ -149,13 +152,13 @@ class UserController { email: auth.user.email, emailValidated: true, features: {}, - firstname: 'Franz', + firstname: auth.user.username, id: '82c1cf9d-ab58-4da2-b55e-aaa41d2142d8', isPremium: true, isSubscriptionOwner: true, - lastname: 'Franz', + lastname: auth.user.lastname, locale: 'en-US', - ...settings || {}, + ...settings || {}, }); } @@ -185,13 +188,13 @@ class UserController { email: auth.user.email, emailValidated: true, features: {}, - firstname: 'Franz', + firstname: auth.user.username, id: '82c1cf9d-ab58-4da2-b55e-aaa41d2142d8', isPremium: true, isSubscriptionOwner: true, - lastname: 'Franz', + lastname: auth.user.lastname, locale: 'en-US', - ...newSettings || {}, + ...newSettings || {}, }, status: [ 'data-updated', @@ -246,6 +249,7 @@ class UserController { email, password: hashedPassword, username: 'Franz', + lastname: 'Franz' }); return response.send('Your account has been created but due to this server\'s configuration, we could not import your Franz account data.\n\nIf you are the server owner, please set CONNECT_WITH_FRANZ to true to enable account imports.'); @@ -301,6 +305,7 @@ class UserController { email: userInf.email, password: hashedPassword, username: userInf.firstname, + lastname: userInf.lastname }); } catch (e) { const errorMessage = `Could not create your user in our system.\nError: ${e}`; diff --git a/database/migrations/1612629845398_users_update_schema.js b/database/migrations/1612629845398_users_update_schema.js new file mode 100644 index 0000000..d07f66d --- /dev/null +++ b/database/migrations/1612629845398_users_update_schema.js @@ -0,0 +1,20 @@ +'use strict' + +/** @type {import('@adonisjs/lucid/src/Schema')} */ +const Schema = use('Schema') + +class UsersUpdateSchema extends Schema { + up() { + this.table('users', (table) => { + table.string('lastname', 80).notNullable().default(''); + }) + } + + down() { + this.table('users', (table) => { + table.dropColumn('lastname') + }) + } +} + +module.exports = UsersUpdateSchema \ No newline at end of file diff --git a/resources/views/dashboard/account.edge b/resources/views/dashboard/account.edge index 9f3539e..6792615 100644 --- a/resources/views/dashboard/account.edge +++ b/resources/views/dashboard/account.edge @@ -37,6 +37,14 @@ type="text" value="{{ old('name', username) }}" placeholder="Name" name="username" required> +
+ +
+ +
+
diff --git a/resources/views/dashboard/data.edge b/resources/views/dashboard/data.edge index 60ef10b..92a78d4 100644 --- a/resources/views/dashboard/data.edge +++ b/resources/views/dashboard/data.edge @@ -122,6 +122,9 @@ Name + + Last Name + Order @@ -147,6 +150,9 @@ {{ workspace.name }} + + {{ workspace.lastname }} + {{ workspace.order }} -- cgit v1.2.3-54-g00ecf