Commit Graph

46 Commits (main)

Author SHA1 Message Date
Jan Dittberner c2eef9cf7c Refactoring away from main package
cacert-boardvoting/pipeline/head There was a failure building this commit Details
This commit is a refactoring of code that has been located in the main
package. We introduce separate packages for the main application, jobs,
notifications, and request handlers.

Dependencies are injected from the main application, this will make
testing easier.
2 years ago
Jan Dittberner 57fd5364fc Fix golangci-lint warnings
- fix spelling
- mark false positives of bodyclose (see
  https://github.com/timakin/bodyclose/issues/30)
2 years ago
Jan Dittberner c1c9ed5dec Fix golangci-lint warnings 2 years ago
Jan Dittberner be77e5f05d Make remind voter job useful 2 years ago
Jan Dittberner f966cbd62f Implement user creation and voter management 2 years ago
Jan Dittberner 39bd724381 Switch routing to chi
Routing with httprouter and alice became a bit too complex. This commit
replaces the routing and middleware composition with chi.
2 years ago
Jan Dittberner de4c6faef6 Implement email address deletion 2 years ago
Jan Dittberner 99a2cde144 Improve flash message handling 2 years ago
Jan Dittberner be14a37b4d Implement add email address 2 years ago
Jan Dittberner a5475ec16e Implement user editing 2 years ago
Jan Dittberner 5efc57d2c3 Implement user deletion
- add audit logging for user changes
- refactor model errors into functions
- implement user delete form and submit handlers
2 years ago
Jan Dittberner db52f88e25 Implement user list 2 years ago
Jan Dittberner c625b6dc9e Add TODO tags for handlers that have no implementation 2 years ago
Jan Dittberner 7f0b52c5b5 Fix linter warnings 2 years ago
Jan Dittberner 368bd8eefb Remove old code
- remove the old code and its dependencies
- perform some refactoring and fix notifications
- add TODO tags for observed shortcomings
- rename voters.go to users.go
- implement health check for SMTP connection
2 years ago
Jan Dittberner 28ddbd2ce6 Implement motion withdraw 2 years ago
Jan Dittberner c12aaf4d89 Implement proxy voting 2 years ago
Jan Dittberner 0c02daf29a Implement direct voting 2 years ago
Jan Dittberner 164495c818 Improve design
- improve icons
- implement VoteChoice and VoteStatus as real types with Scanner and Value
  methods
2 years ago
Jan Dittberner 2b98712aa8 Implement motion editing 2 years ago
Jan Dittberner 335ce16547 Add tests for handlers and middleware
- drop migration 2022052601_drop_unused_decisions_colums because it was implicitly part of an earlier migration
- add /health endpoint for database health check
- add tests for the health check endpoint
- add tests for middleware secureHeaders, logRequest and tryAuthenticate
- add models.UserModel.CreateUser method
2 years ago
Jan Dittberner c3d0733e27 Replace gorilla/csrf with justinas/nosurf
- replace dependency for less indirect dependencies
- remove unused configuration options
2 years ago
Jan Dittberner 257a777e03 Add Cache-Control for authenticated pages 2 years ago
Jan Dittberner d5d7525a31 Tighten http timeout settings 2 years ago
Jan Dittberner 1695ce0168 Implement small improvements
- fix golangci-lint warnings
- start setup for user management
- nicer formatting of user login information
2 years ago
Jan Dittberner 47092bfa9b Implement flash messages
- configure session cookie security
- setup flash message handling in newTemplateData
- show flash message in base.html
- add flash message for new motion
2 years ago
Jan Dittberner f8fbf00c4d Refactor new motion form processing
- extract form parsing into helper method app.decodePostForm
- extract field checks into form.Validate
2 years ago
Jan Dittberner a1a66b7245 Finish new motion create implementation
- rename config block mail_server to mail_config
- rename smtp server settings
- move mail notification settings to mail_config
- improve navigation templates
- prepare routes for user management
2 years ago
Jan Dittberner aa3a1b0cc7 Implement database mapping for vote types 2 years ago
Jan Dittberner e1af6876c1 Implement new motion form
- add session handler
- add form decoder from go-playground
- implement custom decoder for VoteType
2 years ago
Jan Dittberner 47af34f1cd Use httprouter.NotFound and httprouter.PanicHandler 2 years ago
Jan Dittberner 0ad88fe5f4 Implement motion detail view
- add httprouter for parameterized routing
- improve styling
- add routes and handlers
- implement motion detail handler
2 years ago
Jan Dittberner 44a6180a09 Use alice to chain middleware 2 years ago
Jan Dittberner 2ddc013c84 Add panic recovery middleware 2 years ago
Jan Dittberner c0a73494c3 Add request logging 2 years ago
Jan Dittberner 4ce321dc36 Implement security headers and HTTPS 2 years ago
Jan Dittberner c4c64d0202 Add output buffering for rendered pages 2 years ago
Jan Dittberner 65cce5b723 Use embedded templates 2 years ago
Jan Dittberner ff93acb65c Refactorings
- fix typo in nav.html and template functions
- implement template cache and render function
- refactor motion list methods to reduce cyclomatic complexity
2 years ago
Jan Dittberner ec7623a51a Implement timestamp pagination for motion list 2 years ago
Jan Dittberner 49295d2caa Add context to model methods 2 years ago
Jan Dittberner 3346cb5dba Fix golangci-lint warnings 2 years ago
Jan Dittberner 68d6f4bcdc Reimplement decision close job 2 years ago
Jan Dittberner 01b95f2253 Start notification job refactoring 2 years ago
Jan Dittberner ec7d2fe324 Start refactoring to packages 2 years ago
Jan Dittberner 8d0d968441 Start move to new directory structure
- create cmd/boardvoting/main.go
- adapt .goreleaser.yml and Makefile to use cmd/boardvoting for the main
  package
2 years ago