diff --git a/Justfile b/Justfile index 432fbd1..0d99e3a 100644 --- a/Justfile +++ b/Justfile @@ -11,7 +11,7 @@ start-release: build-container-release remove-podman-containers # Removes and stops any containers related to the project [private] remove-podman-containers: - podman container rm -fi ttime + podman container rm -f ttime # Saves the release container to a tarball, pigz is just gzip but multithreaded save-release: build-container-release @@ -23,14 +23,14 @@ load-release file: # Tests every part of the project testall: - cd frontend && npm test - cd frontend && npm run lint cd backend && make test cd backend && make lint + cd frontend && npm test + cd frontend && npm run lint # Cleans up everything related to the project clean: remove-podman-containers - podman image rm -fi ttime-server + podman image rm -f ttime-server rm -rf frontend/dist rm -rf frontend/node_modules rm -f ttime-server.tar.gz @@ -41,6 +41,3 @@ clean: remove-podman-containers [confirm] podman-clean: podman system reset --force - -install-linter: - curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.56.2 diff --git a/Makefile b/Makefile deleted file mode 100644 index 668ccf1..0000000 --- a/Makefile +++ /dev/null @@ -1,41 +0,0 @@ -# Builds a release container -build-container-release: - podman build -t ttime-server -f container/Containerfile . - -# Builds a release container and runs it -start-release: build-container-release remove-podman-containers - podman run -d -e DATABASE_URL=sqlite:release.db -p 8080:8080 --name ttime ttime-server - @echo "Started production ttime-server on http://localhost:8080" - -# Removes and stops any containers related to the project -remove-podman-containers: - podman container rm -fi ttime - -# Tests every part of the project -testall: - cd frontend && npm test - cd frontend && npm run lint - cd backend && make test - cd backend && make lint - -# Cleans up everything related to the project -clean: remove-podman-containers - podman image rm -fi ttime-server - rm -rf frontend/dist - rm -rf frontend/node_modules - rm -f ttime-server.tar.gz - cd backend && make clean - @echo "Cleaned up!" - -# Cleans up everything related to podman, not just the project. Make sure you understand what this means. -podman-clean: - podman system reset --force - -# Installs the linter, which is not included in the ubuntu repo -install-linter: - curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.56.2 - -# This installs just, a make alternative, which is slightly more ergonomic to use -install-just: - @echo "Installing just" - @curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --to /usr/local/bin \ No newline at end of file diff --git a/README.md b/README.md index d75861a..fc55126 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ My recommendation would be to make WSL your primary development environment if y You should consult the [WSL documentation](https://docs.microsoft.com/en-us/windows/wsl/install), but for any recent version of windows, installation essentially boils down to running the following command in **PowerShell as an administrator**: ```powershell -wsl --install -d Ubuntu-22.04 # To get a somewhat recent version of Go +wsl --install ``` If you get any errors related to virtualization, you will need to enable virtualization in the BIOS. This is a common issue, and you can find a guide for your specific motherboard online. This is a one-time operation and will not affect your windows installation. This setting is usually called "VT-x" or "AMD-V" and is usually found in the CPU settings. If you can't find it, shoot me a message and I'll find it for you. diff --git a/backend/Makefile b/backend/Makefile index dcc79b4..23eefa0 100644 --- a/backend/Makefile +++ b/backend/Makefile @@ -69,7 +69,3 @@ lint: # Default target default: build - -install-just: - @echo "Installing just" - @curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --to /usr/local/bin diff --git a/backend/go.mod b/backend/go.mod index 94d5519..ab9be66 100644 --- a/backend/go.mod +++ b/backend/go.mod @@ -10,8 +10,8 @@ require ( require ( github.com/MicahParks/keyfunc/v2 v2.1.0 // indirect - github.com/gofiber/contrib/jwt v1.0.8 - github.com/golang-jwt/jwt/v5 v5.2.1 + github.com/gofiber/contrib/jwt v1.0.8 // indirect + github.com/golang-jwt/jwt/v5 v5.2.1 // indirect ) // These are all for fiber diff --git a/backend/internal/database/db.go b/backend/internal/database/db.go index 84937f1..6e86641 100644 --- a/backend/internal/database/db.go +++ b/backend/internal/database/db.go @@ -14,13 +14,9 @@ import ( type Database interface { AddUser(username string, password string) error RemoveUser(username string) error - PromoteToAdmin(username string) error GetUserId(username string) (int, error) AddProject(name string, description string, username string) error Migrate(dirname string) error - // AddTimeReport(projectname string, start time.Time, end time.Time) error - // AddUserToProject(username string, projectname string) error - // ChangeUserRole(username string, projectname string, role string) error } // This struct is a wrapper type that holds the database connection @@ -34,11 +30,6 @@ var scripts embed.FS const userInsert = "INSERT INTO users (username, password) VALUES (?, ?)" const projectInsert = "INSERT INTO projects (name, description, user_id) SELECT ?, ?, id FROM users WHERE username = ?" -const promoteToAdmin = "INSERT INTO site_admin (admin_id) SELECT id FROM users WHERE username = ?" - -// const addTimeReport = "" -// const addUserToProject = "" -// const changeUserRole = "" // DbConnect connects to the database func DbConnect(dbpath string) Database { @@ -57,18 +48,6 @@ func DbConnect(dbpath string) Database { return &Db{db} } -// func (d *Db) AddTimeReport(projectname string, start time.Time, end time.Time) error { - -// } - -// func (d *Db) AddUserToProject(username string, projectname string) error { - -// } - -// func (d *Db) ChangeUserRole(username string, projectname string, role string) error { - -// } - // AddUser adds a user to the database func (d *Db) AddUser(username string, password string) error { _, err := d.Exec(userInsert, username, password) @@ -81,11 +60,6 @@ func (d *Db) RemoveUser(username string) error { return err } -func (d *Db) PromoteToAdmin(username string) error { - _, err := d.Exec(promoteToAdmin, username) - return err -} - func (d *Db) GetUserId(username string) (int, error) { var id int err := d.Get(&id, "SELECT id FROM users WHERE username = ?", username) diff --git a/backend/internal/database/db_test.go b/backend/internal/database/db_test.go index 96eb9b7..6830668 100644 --- a/backend/internal/database/db_test.go +++ b/backend/internal/database/db_test.go @@ -74,32 +74,3 @@ func TestDbRemoveUser(t *testing.T) { t.Error("RemoveUser failed:", err) } } - -func TestPromoteToAdmin(t *testing.T) { - db, err := setupState() - if err != nil { - t.Error("setupState failed:", err) - } - - err = db.AddUser("test", "password") - if err != nil { - t.Error("AddUser failed:", err) - } - - err = db.PromoteToAdmin("test") - if err != nil { - t.Error("PromoteToAdmin failed:", err) - } -} - -// func TestAddTimeReport(t *testing.T) { - -// } - -// func TestAddUserToProject(t *testing.T) { - -// } - -// func TestChangeUserRole(t *testing.T) { - -// } diff --git a/backend/internal/database/migrations/0060_site_admin.sql b/backend/internal/database/migrations/0060_site_admin.sql deleted file mode 100644 index 14de60d..0000000 --- a/backend/internal/database/migrations/0060_site_admin.sql +++ /dev/null @@ -1,4 +0,0 @@ -CREATE TABLE IF NOT EXISTS site_admin ( - admin_id INTEGER PRIMARY KEY, - FOREIGN KEY (admin_id) REFERENCES users (id) ON DELETE CASCADE -) \ No newline at end of file diff --git a/backend/internal/handlers/global_state.go b/backend/internal/handlers/global_state.go index ffe2072..5dc8895 100644 --- a/backend/internal/handlers/global_state.go +++ b/backend/internal/handlers/global_state.go @@ -115,7 +115,6 @@ func (gs *GState) Login(c *fiber.Ctx) error { // LoginRenew is a simple handler that renews the token func (gs *GState) LoginRenew(c *fiber.Ctx) error { - // For testing: curl localhost:3000/restricted -H "Authorization: Bearer " user := c.Locals("user").(*jwt.Token) claims := user.Claims.(jwt.MapClaims) claims["exp"] = time.Now().Add(time.Hour * 72).Unix()