Skip to content

Commit cd13ddc

Browse files
authored
Merge pull request #64 from mutablelogic/v4
Fixes to endpoints
2 parents 638720d + 015abbb commit cd13ddc

File tree

2 files changed

+20
-11
lines changed

2 files changed

+20
-11
lines changed

pkg/handler/auth/endpoints.go

+19-10
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,19 @@ import (
1212
router "github.com/mutablelogic/go-server/pkg/handler/router"
1313
httprequest "github.com/mutablelogic/go-server/pkg/httprequest"
1414
httpresponse "github.com/mutablelogic/go-server/pkg/httpresponse"
15+
types "github.com/mutablelogic/go-server/pkg/types"
1516
)
1617

1718
///////////////////////////////////////////////////////////////////////////////
1819
// GLOBALS
1920

2021
const (
2122
jsonIndent = 2
22-
23-
// Token should be at least eight bytes (16 chars)
24-
reTokenString = `[a-zA-Z0-9]{16}[a-zA-Z0-9]*`
2523
)
2624

2725
var (
2826
reRoot = regexp.MustCompile(`^/?$`)
29-
reToken = regexp.MustCompile(`^/(` + reTokenString + `)/?$`)
27+
reToken = regexp.MustCompile(`^/(` + types.ReIdentifier + `)/?$`)
3028
)
3129

3230
///////////////////////////////////////////////////////////////////////////////
@@ -46,13 +44,13 @@ func (service *auth) AddEndpoints(ctx context.Context, router server.Router) {
4644
// Description: Create a new token
4745
router.AddHandlerFuncRe(ctx, reRoot, service.CreateToken, http.MethodPost)
4846

49-
// Path: /<token>
47+
// Path: /<token-name>
5048
// Methods: GET
5149
// Scopes: read // TODO: Add scopes
5250
// Description: Get a token
5351
router.AddHandlerFuncRe(ctx, reToken, service.GetToken, http.MethodGet)
5452

55-
// Path: /<token>
53+
// Path: /<token-name>
5654
// Methods: DELETE, PATCH
5755
// Scopes: write // TODO: Add scopes
5856
// Description: Delete or update a token
@@ -67,6 +65,7 @@ func (service *auth) ListTokens(w http.ResponseWriter, r *http.Request) {
6765
tokens := service.jar.Tokens()
6866
result := make([]*Token, 0, len(tokens))
6967
for _, token := range tokens {
68+
// Remove the token value
7069
token.Value = ""
7170
result = append(result, &token)
7271
}
@@ -76,7 +75,7 @@ func (service *auth) ListTokens(w http.ResponseWriter, r *http.Request) {
7675
// Get a token
7776
func (service *auth) GetToken(w http.ResponseWriter, r *http.Request) {
7877
urlParameters := router.Params(r.Context())
79-
token := service.jar.GetWithValue(strings.ToLower(urlParameters[0]))
78+
token := service.jar.GetWithName(strings.ToLower(urlParameters[0]))
8079
if token.IsZero() {
8180
httpresponse.Error(w, http.StatusNotFound)
8281
return
@@ -103,8 +102,18 @@ func (service *auth) CreateToken(w http.ResponseWriter, r *http.Request) {
103102
req.Name = strings.TrimSpace(req.Name)
104103
if req.Name == "" {
105104
httpresponse.Error(w, http.StatusBadRequest, "missing 'name'")
106-
} else if token := service.jar.GetWithName(req.Name); token.IsValid() {
105+
return
106+
} else if token := service.jar.GetWithName(req.Name); !token.IsZero() {
107107
httpresponse.Error(w, http.StatusConflict, "duplicate 'name'")
108+
return
109+
} else if duration := req.Duration.Duration; duration > 0 {
110+
// Truncate duration to minute, check
111+
duration = duration.Truncate(time.Minute)
112+
if duration < time.Minute {
113+
httpresponse.Error(w, http.StatusBadRequest, "invalid 'duration'")
114+
} else {
115+
req.Duration.Duration = duration
116+
}
108117
}
109118

110119
// Create the token
@@ -128,10 +137,10 @@ func (service *auth) CreateToken(w http.ResponseWriter, r *http.Request) {
128137
httpresponse.JSON(w, token, http.StatusCreated, jsonIndent)
129138
}
130139

131-
// Update an existing token
140+
// Update (patch, delete) an existing token
132141
func (service *auth) UpdateToken(w http.ResponseWriter, r *http.Request) {
133142
urlParameters := router.Params(r.Context())
134-
token := service.jar.GetWithValue(strings.ToLower(urlParameters[0]))
143+
token := service.jar.GetWithName(strings.ToLower(urlParameters[0]))
135144
if token.IsZero() {
136145
httpresponse.Error(w, http.StatusNotFound)
137146
return

pkg/handler/auth/scope.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@ import "github.com/mutablelogic/go-server/pkg/version"
44

55
var (
66
// Root scope allows ANY operation
7-
ScopeRoot = version.GitSource + "scope/root"
7+
ScopeRoot = version.GitSource + "/scope/root"
88
)

0 commit comments

Comments
 (0)