diff --git a/db/database.go b/db/database.go
index ff9d059..e01b291 100644
--- a/db/database.go
+++ b/db/database.go
@@ -33,6 +33,7 @@ type Database interface {
CreateUser(user *models.User) error
GetUser(email string) (*models.User, error)
+ GetAllUsers() ([]models.User, error)
UpdateUserPassword(email string, password string) error
CreateFile(file *models.File) error
@@ -195,6 +196,15 @@ func (db *mySQLdb) GetUser(email string) (*models.User, error) {
return &user, nil
}
+func (db *mySQLdb) GetAllUsers() ([]models.User, error) {
+ var users []models.User
+ err := db.DB.Table("users").Select("user_id, Username, Email").Find(&users).Error
+ if err != nil {
+ return nil, err
+ }
+ return users, nil
+}
+
func (db *mySQLdb) UpdateUserPassword(email string, password string) error {
var user models.User
err := db.DB.Table("users").Where("email = ?", email).First(&user).Error
@@ -318,6 +328,16 @@ func (db *postgresDB) GetUser(email string) (*models.User, error) {
return &user, nil
}
+func (db *postgresDB) GetAllUsers() ([]models.User, error) {
+ var users []models.User
+ err := db.DB.Table("users").Select("user_id, username, email").Find(&users).Error
+ if err != nil {
+ fmt.Println(err)
+ return nil, err
+ }
+ return users, nil
+}
+
func (db *postgresDB) UpdateUserPassword(email string, password string) error {
var user models.User
err := db.DB.Table("users").Where("email = $1", email).First(&user).Error
diff --git a/routes/admin/routes.go b/routes/admin/routes.go
index 037a52d..ddda602 100644
--- a/routes/admin/routes.go
+++ b/routes/admin/routes.go
@@ -1,12 +1,44 @@
package admin
-import "net/http"
+import (
+ "github.com/fossyy/filekeeper/app"
+ adminIndex "github.com/fossyy/filekeeper/view/admin/index"
+ "net/http"
+ "os"
+ "path/filepath"
+)
func SetupRoutes() *http.ServeMux {
handler := http.NewServeMux()
handler.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
- w.Write([]byte("Hello, World!"))
+ //users, err := app.Admin.Database.GetAllUsers()
+ //if err != nil {
+ // http.Error(w, "Unable to retrieve users", http.StatusInternalServerError)
+ // return
+ //}
+ //w.Header().Set("Content-Type", "application/json")
+ //if err := json.NewEncoder(w).Encode(users); err != nil {
+ // http.Error(w, "Failed to encode response", http.StatusInternalServerError)
+ // return
+ //}
+ adminIndex.Main().Render(r.Context(), w)
return
})
+ handler.HandleFunc("/public/output.css", func(w http.ResponseWriter, r *http.Request) {
+ openFile, err := os.OpenFile(filepath.Join("public", "output.css"), os.O_RDONLY, 0)
+ if err != nil {
+ w.WriteHeader(http.StatusInternalServerError)
+ app.Server.Logger.Error(err.Error())
+ return
+ }
+ defer openFile.Close()
+ stat, err := openFile.Stat()
+ if err != nil {
+ w.WriteHeader(http.StatusInternalServerError)
+ app.Server.Logger.Error(err.Error())
+ return
+ }
+ http.ServeContent(w, r, openFile.Name(), stat.ModTime(), openFile)
+ })
return handler
}
diff --git a/staging.bat b/staging.bat
index cdbcc43..4e60c1f 100644
--- a/staging.bat
+++ b/staging.bat
@@ -7,4 +7,4 @@ REM Watch for changes in Tailwind CSS
start "" npx tailwindcss -i ./public/input.css -o ./public/output.css --watch
REM Watch for changes in templates and proxy to Go server
-start "" cmd /k "templ generate -watch -proxy=http://localhost:8000"
\ No newline at end of file
+start "" cmd /k "templ generate -watch"
\ No newline at end of file
diff --git a/view/admin/index/index.templ b/view/admin/index/index.templ
new file mode 100644
index 0000000..5cc2d96
--- /dev/null
+++ b/view/admin/index/index.templ
@@ -0,0 +1,429 @@
+package adminIndex
+
+import "github.com/fossyy/filekeeper/view/admin/layout"
+
+templ Main() {
+ @layout.Base() {
+
+
+
+
+
+
System Usage
+
Real-time metrics for your server.
+
+
+
+
+
+
75%
+
CPU Usage
+
+
+
+
8GB
+
Memory Usage
+
+
+
+
100Mbps
+
Network Usage
+
+
+
+
+
+
+
User List
+
Manage your registered users.
+
+
+
+
+
+
+
+ Name
+ |
+
+ Email
+ |
+
+ Role
+ |
+
+ Actions
+ |
+
+
+
+
+
+ John Doe
+ |
+
+ john@example.com
+ |
+
+
+ Admin
+
+ |
+ |
+
+
+
+ Jane Smith
+ |
+
+ jane@example.com
+ |
+
+
+ Editor
+
+ |
+ |
+
+
+
+ Bob Johnson
+ |
+
+ bob@example.com
+ |
+
+
+ User
+
+ |
+ |
+
+
+
+
+
+
+
+
+
+
+
Server Control
+
Manage your server instances.
+
+
+
+
+
+
Server 1
+
192.168.1.100
+
+
+
+
+
+
+
+
+
+
+
Server 2
+
192.168.1.101
+
+
+
+
+
+
+
+
+
+
+
Server 3
+
192.168.1.102
+
+
+
+
+
+
+
+
+
+
+
+
+
Server Environment
+
Manage your server environment variables.
+
+
+
+
+
+
NODE_ENV
+
Environment mode
+
+
+
+
+
+
+
+
+
+ }
+}
diff --git a/view/admin/layout/base.templ b/view/admin/layout/base.templ
new file mode 100644
index 0000000..2506102
--- /dev/null
+++ b/view/admin/layout/base.templ
@@ -0,0 +1,19 @@
+package layout
+
+templ Base(){
+
+
+
+
+
+
+ Admin Page
+
+
+
+
+ { children... }
+
+
+
+}
\ No newline at end of file