Tracks is a GTD™ web application, built with Ruby on Rails https://www.getontracks.org/
Find a file
Claude 4e9e0b4efa
Add default admin user and admin-only user creation
Features added:
- Automatic creation of default admin user on first startup (login: admin, password: admin)
- Admin-only endpoint POST /api/admin/users for creating new users
- Admin users can set is_admin flag when creating users
- Non-admin users are blocked from accessing admin endpoints

Implementation:
- Added CreateDefaultAdmin() function in internal/database/database.go
  - Checks if any users exist, creates admin only if database is empty
  - Admin user: login "admin", password "admin", is_admin true
- Added CreateUser() method to auth service for admin user creation
- Added CreateUser() handler to auth handler
- Added /api/admin/users endpoint with AuthMiddleware + AdminMiddleware
- Updated README_GOLANG.md with:
  - Default admin credentials
  - Instructions for creating additional users
  - Admin API documentation

Security:
- Default admin password should be changed after first login
- AdminMiddleware ensures only users with is_admin=true can access admin routes
- Non-admin users receive 403 Forbidden when accessing admin endpoints

Tested:
- Default admin creation on startup ✓
- Admin login with default credentials ✓
- Admin can create new users ✓
- New users can login ✓
- Non-admin users blocked from admin endpoints ✓
2025-11-05 11:35:36 +00:00
.github Dependabot Ruby version 2025-06-29 14:51:18 +03:00
app Add Traditional Chinese (Taiwan) localization support 2025-09-05 16:19:23 +08:00
bin Change to a new JS preprocessor, change from MySQL to MariaDB and fix polling 2025-06-29 21:27:27 +03:00
cmd/tracks Add default admin user and admin-only user creation 2025-11-05 11:35:36 +00:00
config Add Traditional Chinese (Taiwan) localization support 2025-09-05 16:19:23 +08:00
db Update schema.rb for Postgres support 2024-07-19 14:00:19 +03:00
doc Release 2.7.1 2024-07-25 23:54:52 +03:00
internal Add default admin user and admin-only user creation 2025-11-05 11:35:36 +00:00
lib Upgrade to RoR 7.0 2025-06-28 16:25:52 +03:00
log update gitignore rules to match rails 3.2.8 defaults 2012-09-27 10:37:36 -04:00
public Error message fixes for CSV import. Add the necessary directory to Docker image. 2022-02-09 11:28:05 +02:00
script Change to a new JS preprocessor, change from MySQL to MariaDB and fix polling 2025-06-29 21:27:27 +03:00
test Update the date formatting syntax 2025-06-29 13:25:14 +03:00
test-envs Use MariaDB instead of MySQL also in tests 2025-06-30 00:49:34 +03:00
vendor/assets Drop vendored SWFObject. Included in swf_fu. 2017-02-12 15:16:05 -05:00
.codeclimate.yml Rubocop still doesn't support Ruby > 2.5, so let's disable that. 2024-06-06 00:31:07 +03:00
.dockerignore Replace the version-specific Dockerfiles with one staged Dockerfile 2024-07-18 21:09:04 +03:00
.env.example Simplify database support to SQLite only 2025-11-05 11:23:40 +00:00
.gitignore Rewrite Tracks application in Golang 2025-11-05 10:46:59 +00:00
.rubocop.yml Relax the Rubocop limits a bit to make CodeClimate more useful 2022-02-22 23:23:14 +02:00
.ruby-version Dependabot Ruby version 2025-06-29 14:51:18 +03:00
.yardopts Yardoc - show private and protected methods in api doc 2011-10-24 21:40:18 +02:00
config.ru Revert to stock config.ru 2015-03-08 20:50:27 -04:00
CONTRIBUTING.md Document coding style and adding tests 2022-09-07 15:09:41 +03:00
COPYING Add GPLv2 license text 2013-01-26 12:59:25 -05:00
docker-compose.yml Rewrite Tracks application in Golang 2025-11-05 10:46:59 +00:00
docker-entrypoint.sh Hopefully the final fixes based on fresh installs with both Docker install methods 2020-07-20 00:58:45 +03:00
Dockerfile Rewrite Tracks application in Golang 2025-11-05 10:46:59 +00:00
Gemfile Bump rubocop from 1.78.0 to 1.81.1 2025-09-29 00:01:45 +00:00
Gemfile.lock Bump rubocop from 1.81.6 to 1.81.7 2025-11-03 00:01:34 +00:00
go.mod Simplify database support to SQLite only 2025-11-05 11:23:40 +00:00
go.sum Simplify database support to SQLite only 2025-11-05 11:23:40 +00:00
mkdocs.yml Specify pages for MkDocs 2014-10-02 11:15:13 -04:00
Rakefile Bring a few details in line with Rails 4.1 2014-06-19 12:33:38 -04:00
README.md Remove the IRC channel for now 2024-07-25 23:59:05 +03:00
README_GOLANG.md Add default admin user and admin-only user creation 2025-11-05 11:35:36 +00:00
SECURITY.md Merge pull request #2491 from TracksApp/release_2.5.1 2020-09-24 13:03:55 +03:00
test_api.sh Fix polymorphic tagging and add test script 2025-11-05 10:59:26 +00:00

Tracks: a GTD™ compatible web application built with Ruby on Rails

Build Status Code Climate Translation status CII Best Practices

About

Full instructions for both new installations and upgrades from older installations of Tracks can be found in the wiki.

As always, make sure that you take sensible precautions and back up all your data frequently, taking particular care when you are upgrading.

Enjoy being productive!

Contributors and consulting

If you are thinking about contributing towards the development of Tracks, please read /CONTRIBUTING.md for general information. Also you can find some information on development, testing and contributing on the wiki.