From da2d2db4fe3318317d905683a0474d242f305c2f Mon Sep 17 00:00:00 2001 From: Kurt Riddlesperger Date: Sat, 4 Apr 2020 16:52:22 -0500 Subject: [PATCH] Add email for users --- config-dist.php | 8 ++++++++ controllers/UsersApiController.php | 4 ++-- migrations/0100.sql | 10 ++++++++++ services/UsersService.php | 6 ++++-- views/userform.blade.php | 6 ++++++ views/users.blade.php | 4 ++++ 6 files changed, 34 insertions(+), 4 deletions(-) diff --git a/config-dist.php b/config-dist.php index 2c746528..320a13c9 100644 --- a/config-dist.php +++ b/config-dist.php @@ -74,6 +74,14 @@ Setting('DISABLE_BROWSER_BARCODE_CAMERA_SCANNING', false); # Needs to be a number where Sunday = 0, Monday = 1 and so forth Setting('MEAL_PLAN_FIRST_DAY_OF_WEEK', ''); +# Email smtp settings +Setting('EMAIL_HOST','smtp.gmail.com'); +Setting('EMAIL_PORT','587'); +Setting('EMAIL_USERNAME',''); +Setting('EMAIL_PASSWORD',''); +Setting('EMAIL_FROM','from@example.com, from who'); +Setting('EMAIL_REPLYTO','noreply@example.com, No Reply'); + # Default user settings # These settings can be changed per user, here the defaults diff --git a/controllers/UsersApiController.php b/controllers/UsersApiController.php index c7f21cf0..f3cc04ec 100644 --- a/controllers/UsersApiController.php +++ b/controllers/UsersApiController.php @@ -32,7 +32,7 @@ class UsersApiController extends BaseApiController throw new \Exception('Request body could not be parsed (probably invalid JSON format or missing/wrong Content-Type header)'); } - $this->getUsersService()->CreateUser($requestBody['username'], $requestBody['first_name'], $requestBody['last_name'], $requestBody['password']); + $this->getUsersService()->CreateUser($requestBody['username'], $requestBody['email'], $requestBody['first_name'], $requestBody['last_name'], $requestBody['password']); return $this->EmptyApiResponse($response); } catch (\Exception $ex) @@ -60,7 +60,7 @@ class UsersApiController extends BaseApiController try { - $this->getUsersService()->EditUser($args['userId'], $requestBody['username'], $requestBody['first_name'], $requestBody['last_name'], $requestBody['password']); + $this->getUsersService()->EditUser($args['userId'], $requestBody['username'], $requestBody['email'], $requestBody['first_name'], $requestBody['last_name'], $requestBody['password']); return $this->EmptyApiResponse($response); } catch (\Exception $ex) diff --git a/migrations/0100.sql b/migrations/0100.sql index 4730c419..16e774fc 100644 --- a/migrations/0100.sql +++ b/migrations/0100.sql @@ -40,3 +40,13 @@ JOIN stock s WHERE pr.parent_product_id != pr.sub_product_id GROUP BY pr.sub_product_id HAVING SUM(s.amount) > 0; + +ALTER TABLE users +ADD email TEXT; + +CREATE TABLE password_reset_temp ( + id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, + email TEXT NOT NULL UNIQUE, + key TEXT, + expiration_date DATETIME NOT NULL +); diff --git a/services/UsersService.php b/services/UsersService.php index 14810db0..5cb538bc 100644 --- a/services/UsersService.php +++ b/services/UsersService.php @@ -4,10 +4,11 @@ namespace Grocy\Services; class UsersService extends BaseService { - public function CreateUser(string $username, string $firstName, string $lastName, string $password) + public function CreateUser(string $username, string $email, string $firstName, string $lastName, string $password) { $newUserRow = $this->getDatabase()->users()->createRow(array( 'username' => $username, + 'email' => $email, 'first_name' => $firstName, 'last_name' => $lastName, 'password' => password_hash($password, PASSWORD_DEFAULT) @@ -15,7 +16,7 @@ class UsersService extends BaseService $newUserRow->save(); } - public function EditUser(int $userId, string $username, string $firstName, string $lastName, string $password) + public function EditUser(int $userId, string $username, string $email, string $firstName, string $lastName, string $password) { if (!$this->UserExists($userId)) { @@ -25,6 +26,7 @@ class UsersService extends BaseService $user = $this->getDatabase()->users($userId); $user->update(array( 'username' => $username, + 'email' => $email, 'first_name' => $firstName, 'last_name' => $lastName, 'password' => password_hash($password, PASSWORD_DEFAULT) diff --git a/views/userform.blade.php b/views/userform.blade.php index 2f0b4c14..8b034814 100644 --- a/views/userform.blade.php +++ b/views/userform.blade.php @@ -27,6 +27,12 @@
{{ $__t('A username is required') }}
+
+ + +
{{ $__t('An email is required') }}
+
+
diff --git a/views/users.blade.php b/views/users.blade.php index b50dfd89..25957c42 100644 --- a/views/users.blade.php +++ b/views/users.blade.php @@ -30,6 +30,7 @@ {{ $__t('Username') }} + {{ $__t('Email') }} {{ $__t('First name') }} {{ $__t('Last name') }} @@ -48,6 +49,9 @@ {{ $user->username }} + + {{ $user->email }} + {{ $user->first_name }}