Commit Graph

56 Commits

Author SHA1 Message Date
Geoffrey “Frogeye” Preud'homme
1734484ba7
Forbid empty username header for reverse proxy authentication
Consider the case where a Grocy user wants to use reverse proxy
authentication OR authentication with an API key.

By default, authenticating reverse proxy will unconditionally perform
user authentication, before allowing a request to be passed to Grocy
which will verify an API key, rendering them virtually useless.
So the proxy needs to be configured not to perform authentication in
certain cases, for example the presence of the `Grocy-Api-Key` HTTP
header, or the path being a subdirectory of `/api/`.

It can however be tricky to configure this though. For example, nginx
does not allow conditional authentication, or conditional header
setting. In those cases, when the condition is met, the username header
would still be returned, albeit empty. Grocy will then create an user
with empty username (not normally possible). It default to having all
permissions, and while most are removable, reading chores/stock/etc.
do not seem to be, and would thus be public.

This returns an error when the username is empty, to accomodate for
those cases.
2025-11-30 00:30:34 +01:00
Bernd Bestel
d006436d49
Upgraded PHP-CS-Fixer / applied optimized rules 2023-08-02 18:44:30 +02:00
Bernd Bestel
e52b1c5f60
Upgraded package php-di/php-di 2023-07-29 14:02:56 +02:00
Bernd Bestel
dd5bd3852a
Optimized imports 2023-05-13 14:43:51 +02:00
Bernd Bestel
6ad761e067
Optimized LDAP error handling (references #1865) 2022-04-19 16:56:48 +02:00
Bernd Bestel
893cfe13cd
Set proper HTTP status when redirecting to /login 2022-04-08 17:06:51 +02:00
Marc Ole Bulling
187654d8b3
Added support for reading auth header from env variable (#1746)
* Added support for reading auth header from env variable

* Check if variable is set, more accurate error description

* Formatting

Co-authored-by: Bernd Bestel <bernd@berrnd.de>
2022-01-16 14:46:04 +01:00
FloSet
1e8a1d7ffb
Update LdapAuthMiddleware.php (#1710) 2021-12-06 22:22:10 +01:00
Bernd Bestel
22db124624
Optimized ReverseProxyAuthMiddleware error message 2021-08-22 12:55:09 +02:00
Bernd Bestel
edfa404ed6
Squashed commit
Always execute migration 9999 (can be used to fix things manually)
Optimized meal plan navigation / date range filtering
Prepared next release
Pulled translations from Transifex
Various code optimizations
2021-07-16 17:32:08 +02:00
Bernd Bestel
47c936e026
Reworked authentication related menu item handling (fixes #1462) 2021-07-03 19:40:42 +02:00
Bernd Bestel
0f88eed08c
Upgraded to PHP-CS-Fixer v3 2021-07-03 17:46:47 +02:00
tank0226
b3ed80d186
Improved support for other LDAP servers (#1380)
Co-authored-by: kuanhong <>
2021-06-20 13:22:18 +02:00
Edward Betts
7bbcec91aa
Correct spelling (#1420) 2021-03-31 22:12:51 +02:00
Bernd Bestel
4766c81580
Allow API keys in ReverseProxyAuthMiddleware (closes #1216) 2020-12-24 10:00:51 +01:00
Bernd Bestel
e866035f05
Removed unused code 2020-12-21 19:27:04 +01:00
Bernd Bestel
8f1ce607f7
Implemented user pictures (closes #1158) 2020-12-20 22:08:50 +01:00
Bernd Bestel
31fcdf377a
Implemented LDAP authentication support (closes #305) 2020-10-20 21:43:58 +02:00
Bernd Bestel
6e1e90984f
Typo 2020-10-19 18:41:16 +02:00
Bernd Bestel
94214b867a
More authentication refactoring to also provide "plugable" credentials handling (references #921, needed for #305) 2020-10-19 18:38:12 +02:00
Bernd Bestel
38bb205a55
Fixed error when starting fresh / without existing database file (references #976) 2020-09-07 08:32:04 +02:00
Bernd Bestel
5b05254816
Fixed iCal sharing API route was always unauthenticated (fixes #993, references #921) 2020-09-07 08:30:08 +02:00
Bernd Bestel
836bcc82e5
Applied PHP-CS-Fixer rules 2020-09-01 21:29:47 +02:00
Bernd Bestel
d4c5da2173
Applied PHP formatting rules 2020-08-31 20:40:31 +02:00
fipwmaqzufheoxq92ebc
6f8ad9b76e
Locales: use http-accept-language or cookie (#976)
* Locales: use http-accept-language or "language"-cookie

* Add user-setting "locale"

Rename CULTURE to DEFAULT_LOCALE

* Use LocaleMiddleware also in dev mode

* CORS: don't require authentication on OPTIONS

* Use a standard user-settings-control and start a new generic user settings page, not a separate page for the locale setting

* Fixed (broken by myself) link-return handling

* Clarify language settings

* Removed unneeded files

* Better user settings icon

* Added localization hints

Co-authored-by: Bernd Bestel <bernd@berrnd.de>
2020-08-31 19:11:51 +02:00
Bernd Bestel
3b0d29bed0
Applied EditorConfig settings to all files 2020-08-29 16:41:27 +02:00
fipwmaqzufheoxq92ebc
d60d981fd1
Refactor Authentication and add proxy-authentication (#921)
* Refactor Authentication-Middlewares

* Add Proxy-Authentication

* Disable "Logout" & "Manage Users" when using ProxyAuth

* Review

Co-authored-by: Bernd Bestel <bernd@berrnd.de>
2020-08-19 19:23:13 +02:00
Bernd Bestel
16b9e2c30a
Return Access-Control-Allow-Origin for all API (content) requests (references #681) 2020-04-22 17:36:20 +02:00
Bernd Bestel
5e6a9dd443
Return status code 204 for CORS OPTIONS requests (references #681) 2020-04-21 21:15:45 +02:00
Bernd Bestel
53a0a2f4e1
Also allow just all headers and request methods for CORS OPTIONS requests (references #681) 2020-04-21 21:09:49 +02:00
Bernd Bestel
98f2276e17
Send just * for Access-Control-Allow-Origin header in CORS OPTIONS requests (again closes #681) 2020-04-21 21:05:32 +02:00
Bernd Bestel
b971375881
Reimplemented CORS handling (fixes #681) 2020-04-13 10:00:29 +02:00
Bernd Bestel
30908f5ba9
Fixed typo (references #697) 2020-04-03 18:55:48 +02:00
James Addison
ca9354064d
PSR7-decoupled rework of authentication fixup (#697) 2020-04-03 18:45:40 +02:00
Bernd Bestel
2778d2ad56
Don't return anything in the response body when unauthenticated (fixes #696) 2020-04-03 18:22:05 +02:00
zebardy
1a5f3ce926
Convert services to singletons and use lazy loading to improve performance (#479)
* use singletons to reduce need to recreate the same objects

* unable to make the constructor private

* comment out debug printing to log file

* correct typo of treating self() as a var instead of a function

* utilise Localisation service as a singleton

* fix errent line that should have been commented

* remove phpinfo

* correct mistake in stock controller

* try storing app in apcu

* serialise inside the app closures

* get timings for db-changed-time

* get timings for db-changed-time

* store localisation service in apcu

* stor translations in apcu instead of localisation service (due to database connection)

* correct syntax error

* forgot to uncomment instance map

* correct indentation and variable out of scope

* more timings for app execution time

* try apc caching for views

* correct scope for Pot variable

* remove additional fopen

* correct timings for app build time

* correct timings for app object build time

* correct timings for app route build time

* get timings for routing timings

* get more in depth timings for routing loading

* fix more in depth timings for routing loading

* start investigating session auth middleware creation

* start investigating session auth middleware creation

* start investigating Login controller time

* start investigating Login controller time

* in depth look at Logincontroller timings

* comment out debug printing

* lazily obtain valus for page rendering

* correct syntax error

* correct scope of variable

* correct visibiity of methds inherited from BaseController

* missing use for Userfieldsservice

* lazy loading of open api spec

* lazy loading of users service

* lazy loading of batteries service

* lazy loading of services in controllers

* lazy loading of services in services

* correct mistake

* fix userservice

* fix userservice

* fix userfieldservice

* fix chores service

* fix calendar service

* remove Dockerfile used for development

* Remove docker compose file used for development

* Clean up app.php

* remove last diff

* Clean up base controller

* Clean up controllers

* lean up middleware

* Clean up and tuen all services into singletons

* remove debug from routes.php

* remove acpu from localisation

* Complete removal of acpu from localisation

* fixes for things broken

* More fixes following merge

* Fix for start up bug. Re factoring singleton code had brroken due to scope of clas var.

* fix bug where getUsersService is declared twice

* bug fixes following merge

* bug fixes following merge

* bug fixes following merge

* bug fixes following merge

* bug fixes following merge

* Fix all the not working things...

* Deleted off-topic files

* Deleted off-topic files

Co-authored-by: Bernd Bestel <bernd@berrnd.de>
2020-03-01 17:47:47 +01:00
Bernd Bestel
d4fa1a64c2
Upgrade Slim Framework to v4 (closes #561) 2020-02-11 17:42:03 +01:00
Bernd Bestel
a8cf5ae9ab
Handle demo mode via a setting instead of checking the existence of a file (closes #484) 2020-01-05 09:11:11 +01:00
Bernd Bestel
d6e9dc1b59
Allow providing the API key also via a query parameter (closes #329) 2019-08-10 13:30:50 +02:00
Bernd Bestel
09b23847b5
Added a new config.php setting DISABLE_AUTH to be able to disable authentication / the login screen (closes #246) 2019-07-06 18:29:18 +02:00
Bernd Bestel
90291fdbca Added possibility to export the calendar in iCal format (closes #141) 2019-03-04 17:44:48 +01:00
Bernd Bestel
e5fb609c8e
Finalize file API (references #58) 2018-09-30 22:16:33 +02:00
Bernd Bestel
bb5dcb2434 Fixed a warning on embedded and demo installations 2018-08-09 17:24:37 +02:00
Bernd Bestel
6081b8ee67
Fix some form validation problems (closes #36) 2018-08-04 07:45:24 +02:00
Bernd Bestel
42c1709633
Optimize and refactor latest changes 2018-07-25 19:28:15 +02:00
Bernd Bestel
bcbdf58376
Prefix all global vars 2018-07-24 19:41:35 +02:00
Bernd Bestel
7f8540ff4e
Replace the single user (defined in /data/config.php) with a multi user management thing 2018-07-24 19:31:43 +02:00
Bernd Bestel
3b4141eb4d
Prepare for embedded mode 2018-07-16 21:17:32 +02:00
Bernd Bestel
ab8094e1c0
Don't expose username when not logged in 2018-05-12 14:56:51 +02:00
Bernd Bestel
99b2a84667
Finish API documentation and token auth (references #5) 2018-04-21 19:18:00 +02:00