diff --git a/server/constants.go b/server/constants.go index 346977b..f62c6fa 100644 --- a/server/constants.go +++ b/server/constants.go @@ -13,4 +13,5 @@ const ( HttpErrIdPlaceholder = iota HttpErrIdMissingContextValue HttpErrIdDbFailure + HttpErrIdNotAuthenticated ) diff --git a/server/server.go b/server/server.go index ab33d20..27e415e 100644 --- a/server/server.go +++ b/server/server.go @@ -4,10 +4,10 @@ import ( "fmt" "io/fs" "net/http" - "net/url" "github.com/mstarongithub/passkey" "github.com/rs/zerolog/log" + "gitlab.com/mstarongitlab/goutils/other" "gitlab.com/mstarongitlab/linstrom/storage" ) @@ -38,7 +38,14 @@ func buildRootHandler(pkey *passkey.Passkey, reactiveFS, staticFS fs.FS) http.Ha pkey.Auth( ContextKeyPasskeyUsername, nil, - passkey.RedirectUnauthorized(url.URL{Path: "/"}), + func(w http.ResponseWriter, r *http.Request) { + other.HttpErr( + w, + HttpErrIdNotAuthenticated, + "Not authenticated", + http.StatusUnauthorized, + ) + }, )(ChainMiddlewares(setupTestEndpoints(), passkeyIdToAccountIdTransformerMiddleware)), ) diff --git a/storage/accessTokens.go b/storage/accessTokens.go new file mode 100644 index 0000000..f1a95bb --- /dev/null +++ b/storage/accessTokens.go @@ -0,0 +1,44 @@ +package storage + +import ( + "time" + + "gorm.io/gorm" +) + +type AccessToken struct { + gorm.Model + BelongsToUserId string + Name string + Token string + ExpiresAt time.Time +} + +func (s *Storage) GetTokensForAccId(accId uint) ([]AccessToken, error) { + // TODO: Implement me + panic("Not implemented") +} + +func (s *Storage) NewAccessToken( + forAccId uint, + name string, + expiresAt time.Time, +) (*AccessToken, error) { + // TODO: Implement me + panic("Not implemented") +} + +func (s *Storage) ExtendToken(accId uint, newExpiry time.Time) error { + // TODO: Implement me + panic("Not implemented") +} + +func (s *Storage) RenameToken(accId, oldName string, newName string) error { + // TODO: Implement me + panic("Not implemented") +} + +func (s *Storage) DiscardToken(accId uint, name string) error { + // TODO: Implement me + panic("Not implemented") +} diff --git a/storage/errors.go b/storage/errors.go index b0885d0..fae61e0 100644 --- a/storage/errors.go +++ b/storage/errors.go @@ -11,3 +11,4 @@ func (n ErrNotImplemented) Error() string { var ErrEntryNotFound = errors.New("entry not found") var ErrEntryAlreadyExists = errors.New("entry already exists") var ErrNothingToChange = errors.New("nothing to change") +var ErrInvalidData = errors.New("invalid data") diff --git a/storage/storage.go b/storage/storage.go index b4529c9..d210a56 100644 --- a/storage/storage.go +++ b/storage/storage.go @@ -6,8 +6,6 @@ package storage import ( - "errors" - "github.com/rs/zerolog/log" "gitlab.com/mstarongitlab/linstrom/storage/cache" "gorm.io/driver/postgres" @@ -21,8 +19,6 @@ type Storage struct { cache *cache.Cache } -var ErrInvalidData = errors.New("invalid data") - func NewStorage(dbUrl string, cache *cache.Cache) (*Storage, error) { db, err := gorm.Open(postgres.Open(dbUrl), &gorm.Config{ Logger: newGormLogger(log.Logger), @@ -39,6 +35,7 @@ func NewStorage(dbUrl string, cache *cache.Cache) (*Storage, error) { PasskeySession{}, InboundJob{}, OutboundJob{}, + AccessToken{}, ) if err != nil { return nil, err