Commit Graph

107 Commits

Author SHA1 Message Date
Scott McKendry 04b8e9884b feat(db): add memory storage driver
removes the sqlite dependency for tests, also brings back the option for
users to run zero persistence instances of tinyauth.

adds new mapErr fn for sqlc wrapper gen to prevent sql errors from
leaking out of the store implementation.
2026-05-04 05:02:27 +12:00
Scott McKendry 0244f39387 feat(db): add code gen to build sqlc-compatible wrappers 2026-05-03 14:11:54 +12:00
Ryc O'Chet f3186571cc Organisation update, steveiliop56 to tinyauthapp (#793)
* infrastructure and docs

* code

* fix issue templates

* chore: fix scoreboard url

* chore: remove migration warning

* chore: fix readme docs link

---------

Co-authored-by: Stavros <steveiliop56@gmail.com>
2026-04-26 17:13:53 +03:00
Stavros 061d28f5e3 refactor: use tinyauthapp/paerser instead of traefik/paerser (#781)
* refactor: use own paerser library instead of traefik

* chore: remove submodules from release images and workflows
2026-04-10 17:36:13 +03:00
Stavros 08e6b84615 fix: use int for status in healthcheck cmd 2026-04-01 16:12:11 +03:00
dependabot[bot] 7bfee6efc2 chore(deps): bump github.com/charmbracelet/huh from 0.8.0 to 1.0.0 (#708)
* chore(deps): bump github.com/charmbracelet/huh from 0.8.0 to 1.0.0

Bumps [github.com/charmbracelet/huh](https://github.com/charmbracelet/huh) from 0.8.0 to 1.0.0.
- [Release notes](https://github.com/charmbracelet/huh/releases)
- [Commits](https://github.com/charmbracelet/huh/compare/v0.8.0...v1.0.0)

---
updated-dependencies:
- dependency-name: github.com/charmbracelet/huh
  dependency-version: 1.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: breaking changes for huh form

* chore: bump go version everywhere

* chore: go mod tidy

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Stavros <steveiliop56@gmail.com>
2026-03-30 19:15:30 +03:00
Luiz Felipe Fontes Botelho f80be1ca61 fix: update healthcheck to use server address and port individually (#698) 2026-03-08 11:17:55 +02:00
Stavros dea8d72f01 feat: add configuration guide in create oidc client command 2026-02-27 20:04:02 +02:00
Stavros 4a1889c20b feat: oidc client create command (#672)
* feat: add oidc client create command

* refactor: use own utility for creating random strings (more flexible
than stdlib)

* feat: validate client name to avoid config errors

* refactor: limit to only alphanumeric characters and hyphens

* refactor: remove the need of the logger in the create oidc client cmd
2026-02-26 17:28:58 +02:00
Stavros 6112f977ea feat: auto generate example env file (#647)
* feat: auto generate example env file

* refactor: simplify build paths func and better slice handling

* chore: forgot to stage everything

* chore: review comments

* refactor: remove square brackets because they mess up the syntax
highlighting

* refactor: use lowercase name to mark dynamic values
2026-02-16 23:39:05 +02:00
Stavros bea680edec fix: healthcheck should not use public app url 2026-02-07 12:57:10 +02:00
Stavros f24595b24e fix: add more config loaders in the healthcheck command 2026-02-02 16:25:49 +02:00
Stavros 671343f677 feat: oidc (#605)
* chore: add oidc base config

* wip: authorize page

* feat: implement basic oidc functionality

* refactor: implement oidc following tinyauth patterns

* feat: adapt frontend to oidc flow

* fix: review comments

* fix: oidc review comments

* feat: refresh token grant type support

* feat: cleanup expired oidc sessions

* feat: frontend i18n

* fix: fix typo in error screen

* tests: add basic testing

* fix: more review comments

* refactor: rework oidc error messages

* feat: openid discovery endpoint

* feat: jwk endpoint

* i18n: fix typo

* fix: more rabbit nitpicks

* fix: final review comments

* i18n: authorize page error messages
2026-02-01 19:00:59 +02:00
Stavros 6431afb7d1 refactor: handle subcommands properly 2026-01-29 15:54:29 +02:00
Stavros 4926e53409 feat: ldap group acls (#590)
* wip

* refactor: remove useless session struct abstraction

* feat: retrieve and store groups from ldap provider

* chore: fix merge issue

* refactor: rework ldap group fetching logic

* feat: store ldap group results in cache

* fix: review nitpicks

* fix: review feedback
2026-01-17 20:03:29 +02:00
Pushpinder Singh 53bd413046 feat: configurable component-level logging (#575)
* Refactor logging to use centralized logger utility

- Removed direct usage of zerolog in multiple files and replaced it with a centralized logging utility in the `utils` package.
- Introduced `Loggers` struct to manage different loggers (Audit, HTTP, App) with configurable levels and outputs.
- Updated all relevant files to utilize the new logging structure, ensuring consistent logging practices across the application.
- Enhanced error handling and logging messages for better traceability and debugging.

* refactor: update logging implementation to use new logger structure

* Refactor logging to use tlog package

- Replaced instances of utils logging with tlog in various controllers, services, and middleware.
- Introduced audit logging for login success, login failure, and logout events.
- Created tlog package with structured logging capabilities using zerolog.
- Added tests for the new tlog logger functionality.

* refactor: update logging configuration in environment files

* fix: adding coderabbit suggestions

* fix: ensure correct audit caller

* fix: include reason in audit login failure logs
2026-01-15 15:57:19 +02:00
Pushpinder Singh e7bd64d7a3 feat: add session max lifetime and fix refresh logic (#559)
* feat: allow any HTTP method for /api/auth/envoy and restrict methods for non-envoy proxies

* feat: add Allow header for invalid methods in proxyHandler

* feat: add session max lifetime and fix refresh logic

* fix: set default value for created_at column and improve session expiration logic

---------

Co-authored-by: Stavros <steveiliop56@gmail.com>
2026-01-07 13:37:23 +02:00
Stavros b159f44729 fix: add missing ldap search filter 2025-12-29 19:46:33 +02:00
Stavros a1c3e416b6 refactor: use proper module name (#542)
* chore: reorganize go mod

* refactor: use proper module name
2025-12-26 17:53:24 +02:00
Stavros 03ed18343e feat: unified config (#533)
* chore: add yaml config ref

* feat: add initial implementation of a traefik like cli

* refactor: remove dependency on traefik

* chore: update example env

* refactor: update build

* chore: remove unused code

* fix: fix translations not loading

* feat: add experimental config file support

* chore: mod tidy

* fix: review comments

* refactor: move tinyauth to separate package

* chore: add quotes to all env variables

* chore: resolve go mod and sum conflicts

* chore: go mod tidy

* fix: review comments
2025-12-22 22:13:40 +02:00
Modestas Rinkevičius 3961589f1e feat: auto-create database directory if missing (#510) 2025-12-11 14:43:57 +02:00
Stavros 6c90046343 feat: add option to disable ui warnings 2025-11-21 17:37:08 +02:00
Stavros 60dada86a6 feat: add support for listening on unix sockets 2025-11-04 18:42:04 +02:00
Stavros e23f4f1371 chore: disable env acls 2025-11-04 17:48:45 +02:00
Stavros 9b76a84ee2 feat: add trace logging 2025-10-11 15:27:01 +03:00
Stavros bbf8112995 refactor: touch up loggin in healthcheck command 2025-10-07 15:41:39 +03:00
Stavros 1ee0cee171 feat: distroless image 2025-10-07 15:03:53 +03:00
Stavros 720f387908 refactor: rework cli healthcheck logic 2025-10-07 14:30:09 +03:00
Stavros f0a48cc91c feat: add health check command 2025-10-06 21:45:23 +03:00
Stavros 2f8fa39a9b refactor: make cli modular (#390)
* refactor: make cli modular

* chore: apply suggestion from @Rycochet

Co-authored-by: Ryc O'Chet <Rycochet@users.noreply.github.com>

* chore: apply review suggestions

* refactor: no need to handle user escaping in verify cmd

---------

Co-authored-by: Ryc O'Chet <Rycochet@users.noreply.github.com>
2025-10-06 21:27:51 +03:00
Stavros f8047a6c2e feat: add option to disable resources server 2025-09-22 15:52:43 +03:00
axjp e114bf0943 Update verify.go (#364) 2025-09-21 09:52:41 +03:00
Stavros 50105e4e9d feat: version info analytics (#363)
* feat: version info analytics

* refactor: don't create new client everytime
2025-09-19 14:44:22 +03:00
Stavros 5c866bad1a feat: multiple oauth providers (#355)
* feat: add flag decoder (candidate)

* refactor: finalize flags decoder

* feat: add env decoder

* feat: add oauth config parsing logic

* feat: implement backend logic for multiple oauth providers

* feat: implement multiple oauth providers in the frontend

* feat: add some default icons

* chore: add credits for parser

* feat: style oauth auto redirect screen

* fix: bot suggestions

* refactor: rework decoders using simpler and more efficient pattern

* refactor: rework oauth name database migration
2025-09-16 13:28:28 +03:00
Stavros 773cd6d171 feat: add trusted proxies config value 2025-09-03 12:14:13 +03:00
Stavros b9e35716ac feat: invalid domain warning (#332)
* wip

* refactor: update domain warning layout

* i18n: add domain warning translations

* refactor: rework hooks usage

* feat: clear timeouts

* fix: use useeffect to cleanup timeout

* refactor: rework redirects and history storage

* refactor: rename domain to root domain
2025-09-01 18:22:42 +03:00
Stavros 03d06cb0a7 feat: add sqlite database for storing sessions (#326)
* feat: add sqlite database for storing sessions

* refactor: use db instance instead of service in auth service

* fix: coderabbit suggestions
2025-08-29 12:35:11 +03:00
Stavros 504a3b87b4 refactor: rework file structure (#325)
* wip: add middlewares

* refactor: use context fom middleware in handlers

* refactor: use controller approach in handlers

* refactor: move oauth providers into services (non-working)

* feat: create oauth broker service

* refactor: use a boostrap service to bootstrap the app

* refactor: split utils into smaller files

* refactor: use more clear name for frontend assets

* feat: allow customizability of resources dir

* fix: fix typo in ui middleware

* fix: validate resource file paths in ui middleware

* refactor: move resource handling to a controller

* feat: add some logging

* fix: configure middlewares before groups

* fix: use correct api path in login mutation

* fix: coderabbit suggestions

* fix: further coderabbit suggestions
2025-08-26 15:05:03 +03:00
Stavros 88d918d608 fix: don't fail app if LDAP is not configured 2025-07-15 02:24:09 +03:00
Stavros 8ebed0ac9a chore: remove meaningless comments 2025-07-12 13:17:06 +03:00
Stavros f73eb9571f fix: fix password reset message translations 2025-07-11 16:16:49 +03:00
Stavros 6ec8c9766c feat: add ldap support (#232)
* feat: add ldap support

* feat: add insecure option for self-signed certificates

* fix: recognize ldap as a username provider

* test: fix tests

* feat: add configurable search filter

* fix: fix error message in ldap search result

* refactor: bot suggestions
2025-07-05 18:17:39 +03:00
Stavros 1941de1125 refactor: remove init functions from methods (#228) 2025-07-04 02:35:09 +03:00
Stavros c10bff55de fix: encrypt the cookie in sessions (#225)
* fix: encrypt the cookie in sessions

* tests: use new auth config in tests

* fix: coderabbit suggestions
2025-07-04 01:43:36 +03:00
Stavros fc73e25d51 feat: allow generic provider to use untrusted SSL certificates (#164)
* feat: allow generic provider to use untrusted SSL certificates

* chore: fix typo

* chore: bot suggestion

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-05-27 16:42:20 +03:00
Stavros 3a7b71ae3e feat: generate a unique id for the cookie names based on the domain (#161)
* feat: generate a unique id for the cookie names based on the domain

* tests: fix tests
2025-05-25 12:38:21 +03:00
Stavros 318f00993e Feat/new UI (#153)
* wip

* feat: make forms functional

* feat: finalize pages

* chore: remove unused translations

* feat: app context

* feat: user context

* feat: finalize username login

* fix: use correct tab order in login form

* feat: add oauth logic

* chore: update readme and assets

* chore: rename docs back to assets

* feat: favicons

* feat: custom background image config option

* chore: add acknowledgements for background image

* feat: sanitize redirect URL

* feat: sanitize redirect URL on check

* chore: fix dependabot config

* refactor: bot suggestions

* fix: correctly redirect to app and check for untrusted redirects

* fix: run oauth auto redirect only when there is a redirect URI

* refactor: change select color

* fix: fix dockerfiles

* fix: fix hook rendering

* chore: remove translations cdn

* chore: formatting

* feat: validate api response against zod schema

* fix: use axios error instead of generic error in login page
2025-05-20 17:17:12 +03:00
Stavros 91e3bbc9d9 refactor: store version in constants 2025-05-20 16:39:27 +03:00
Stavros ff48fa320e feat: nightly release workflow 2025-05-15 16:41:26 +03:00
Stavros 773942dc3b feat: add support for auto redirecting to oauth providers 2025-05-01 14:18:26 +03:00