• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

DigitalTolk / wireguard-ui / 24791061837

22 Apr 2026 04:50PM UTC coverage: 81.067%. First build
24791061837

push

github

web-flow
Add auditlogs (#1)

* Add auditlogs

* test

* test

* test

* test

* test

* test

164 of 233 branches covered (70.39%)

Branch coverage included in aggregate %.

1878 of 2390 new or added lines in 34 files covered. (78.58%)

2722 of 3327 relevant lines covered (81.82%)

6.69 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

92.06
/handler/api_v1_auth.go
1
package handler
2

3
import (
4
        "net/http"
5
        "os"
6

7
        "github.com/labstack/echo/v4"
8

9
        "github.com/DigitalTolk/wireguard-ui/store"
10
        "github.com/DigitalTolk/wireguard-ui/util"
11
)
12

13
// APIAuth middleware validates session for API endpoints (returns JSON 401 instead of redirect)
14
func APIAuth(next echo.HandlerFunc) echo.HandlerFunc {
2✔
15
        return func(c echo.Context) error {
4✔
16
                if util.DisableLogin {
3✔
17
                        return next(c)
1✔
18
                }
1✔
19
                if !isValidSession(c) {
2✔
20
                        return apiUnauthorized(c, "Not authenticated")
1✔
21
                }
1✔
NEW
22
                return next(c)
×
23
        }
24
}
25

26
// APIAdmin middleware checks admin status for API endpoints
27
func APIAdmin(next echo.HandlerFunc) echo.HandlerFunc {
2✔
28
        return func(c echo.Context) error {
4✔
29
                if !isAdmin(c) {
3✔
30
                        return apiForbidden(c, "Admin access required")
1✔
31
                }
1✔
32
                return next(c)
1✔
33
        }
34
}
35

36
// APIGetMe returns the current authenticated user's info
37
func APIGetMe(db store.IStore) echo.HandlerFunc {
2✔
38
        return func(c echo.Context) error {
4✔
39
                if util.DisableLogin {
3✔
40
                        return c.JSON(http.StatusOK, map[string]interface{}{
1✔
41
                                "username":     "admin",
1✔
42
                                "email":        "",
1✔
43
                                "display_name": "Admin",
1✔
44
                                "admin":        true,
1✔
45
                        })
1✔
46
                }
1✔
47

48
                username := currentUser(c)
1✔
49
                if username == "" {
1✔
NEW
50
                        return apiUnauthorized(c, "Not authenticated")
×
NEW
51
                }
×
52

53
                user, err := db.GetUserByName(username)
1✔
54
                if err != nil {
1✔
NEW
55
                        return apiInternalError(c, "Cannot find user")
×
NEW
56
                }
×
57

58
                return c.JSON(http.StatusOK, map[string]interface{}{
1✔
59
                        "username":     user.Username,
1✔
60
                        "email":        user.Email,
1✔
61
                        "display_name": user.DisplayName,
1✔
62
                        "admin":        user.Admin,
1✔
63
                })
1✔
64
        }
65
}
66

67
// APILogout destroys the current session
68
func APILogout() echo.HandlerFunc {
1✔
69
        return func(c echo.Context) error {
2✔
70
                clearSession(c)
1✔
71
                return c.JSON(http.StatusOK, map[string]interface{}{
1✔
72
                        "message": "Logged out successfully",
1✔
73
                })
1✔
74
        }
1✔
75
}
76

77
// Health returns a simple health check
78
func Health() echo.HandlerFunc {
1✔
79
        return func(c echo.Context) error {
2✔
80
                return c.String(http.StatusOK, "ok")
1✔
81
        }
1✔
82
}
83

84
// Favicon serves the favicon
85
func Favicon() echo.HandlerFunc {
2✔
86
        return func(c echo.Context) error {
4✔
87
                if favicon, ok := os.LookupEnv(util.FaviconFilePathEnvVar); ok {
3✔
88
                        return c.File(favicon)
1✔
89
                }
1✔
90
                return c.Redirect(http.StatusFound, util.BasePath+"/assets/favicon.ico")
1✔
91
        }
92
}
93

94
// APIAppInfo returns app metadata for the frontend
95
func APIAppInfo() echo.HandlerFunc {
1✔
96
        return func(c echo.Context) error {
2✔
97
                return c.JSON(http.StatusOK, map[string]interface{}{
1✔
98
                        "base_path":       util.BasePath,
1✔
99
                        "client_defaults": util.ClientDefaultsFromEnv(),
1✔
100
                })
1✔
101
        }
1✔
102
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc