Add IAM scaffold modules
This commit is contained in:
7
iam/cmd/iam/main.go
Normal file
7
iam/cmd/iam/main.go
Normal file
@@ -0,0 +1,7 @@
|
||||
package main
|
||||
|
||||
import "todo-vibe-coding/iam/internal/service"
|
||||
|
||||
func main() {
|
||||
_ = service.NewIAM()
|
||||
}
|
||||
3
iam/deployments/README.md
Normal file
3
iam/deployments/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# deployments
|
||||
|
||||
Deployment manifests placeholder.
|
||||
8
iam/docs/README.md
Normal file
8
iam/docs/README.md
Normal file
@@ -0,0 +1,8 @@
|
||||
# IAM Demo Structure
|
||||
|
||||
This folder is a lightweight example showing how files can be split by responsibility.
|
||||
|
||||
- cmd/iam/main.go creates the service.
|
||||
- internal/service wires dependencies.
|
||||
- internal/auth/jwt holds token logic.
|
||||
- internal/repo provides data access interfaces.
|
||||
7
iam/internal/api/http/router.go
Normal file
7
iam/internal/api/http/router.go
Normal file
@@ -0,0 +1,7 @@
|
||||
package http
|
||||
|
||||
type Router struct{}
|
||||
|
||||
func NewRouter() *Router {
|
||||
return &Router{}
|
||||
}
|
||||
7
iam/internal/api/middleware/logging.go
Normal file
7
iam/internal/api/middleware/logging.go
Normal file
@@ -0,0 +1,7 @@
|
||||
package middleware
|
||||
|
||||
type Logger struct{}
|
||||
|
||||
func NewLogger() *Logger {
|
||||
return &Logger{}
|
||||
}
|
||||
7
iam/internal/auth/jwks/jwks.go
Normal file
7
iam/internal/auth/jwks/jwks.go
Normal file
@@ -0,0 +1,7 @@
|
||||
package jwks
|
||||
|
||||
type Store struct{}
|
||||
|
||||
func NewStore() *Store {
|
||||
return &Store{}
|
||||
}
|
||||
9
iam/internal/auth/jwt/manager.go
Normal file
9
iam/internal/auth/jwt/manager.go
Normal file
@@ -0,0 +1,9 @@
|
||||
package jwt
|
||||
|
||||
type Manager struct {
|
||||
secret string
|
||||
}
|
||||
|
||||
func NewManager(secret string) *Manager {
|
||||
return &Manager{secret: secret}
|
||||
}
|
||||
7
iam/internal/auth/keys/keys.go
Normal file
7
iam/internal/auth/keys/keys.go
Normal file
@@ -0,0 +1,7 @@
|
||||
package keys
|
||||
|
||||
type Manager struct{}
|
||||
|
||||
func NewManager() *Manager {
|
||||
return &Manager{}
|
||||
}
|
||||
7
iam/internal/auth/refresh/refresh.go
Normal file
7
iam/internal/auth/refresh/refresh.go
Normal file
@@ -0,0 +1,7 @@
|
||||
package refresh
|
||||
|
||||
type Store struct{}
|
||||
|
||||
func NewStore() *Store {
|
||||
return &Store{}
|
||||
}
|
||||
7
iam/internal/auth/revoke/revoke.go
Normal file
7
iam/internal/auth/revoke/revoke.go
Normal file
@@ -0,0 +1,7 @@
|
||||
package revoke
|
||||
|
||||
type Tracker struct{}
|
||||
|
||||
func NewTracker() *Tracker {
|
||||
return &Tracker{}
|
||||
}
|
||||
9
iam/internal/config/config.go
Normal file
9
iam/internal/config/config.go
Normal file
@@ -0,0 +1,9 @@
|
||||
package config
|
||||
|
||||
type Config struct {
|
||||
Issuer string
|
||||
}
|
||||
|
||||
func Default() Config {
|
||||
return Config{Issuer: "iam-demo"}
|
||||
}
|
||||
11
iam/internal/domain/models.go
Normal file
11
iam/internal/domain/models.go
Normal file
@@ -0,0 +1,11 @@
|
||||
package domain
|
||||
|
||||
type User struct {
|
||||
ID int64
|
||||
Name string
|
||||
}
|
||||
|
||||
type Role struct {
|
||||
ID int64
|
||||
Name string
|
||||
}
|
||||
5
iam/internal/errors/errors.go
Normal file
5
iam/internal/errors/errors.go
Normal file
@@ -0,0 +1,5 @@
|
||||
package errors
|
||||
|
||||
import "errors"
|
||||
|
||||
var ErrUnauthorized = errors.New("unauthorized")
|
||||
20
iam/internal/repo/user_store.go
Normal file
20
iam/internal/repo/user_store.go
Normal file
@@ -0,0 +1,20 @@
|
||||
package repo
|
||||
|
||||
type User struct {
|
||||
ID int64
|
||||
Name string
|
||||
}
|
||||
|
||||
type UserStore interface {
|
||||
FindByID(id int64) (*User, error)
|
||||
}
|
||||
|
||||
type inMemoryUserStore struct{}
|
||||
|
||||
func NewInMemoryUserStore() UserStore {
|
||||
return &inMemoryUserStore{}
|
||||
}
|
||||
|
||||
func (s *inMemoryUserStore) FindByID(id int64) (*User, error) {
|
||||
return &User{ID: id, Name: "demo"}, nil
|
||||
}
|
||||
18
iam/internal/service/iam.go
Normal file
18
iam/internal/service/iam.go
Normal file
@@ -0,0 +1,18 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"todo-vibe-coding/iam/internal/auth/jwt"
|
||||
"todo-vibe-coding/iam/internal/repo"
|
||||
)
|
||||
|
||||
type IAM struct {
|
||||
tokens *jwt.Manager
|
||||
users repo.UserStore
|
||||
}
|
||||
|
||||
func NewIAM() *IAM {
|
||||
return &IAM{
|
||||
tokens: jwt.NewManager("dev-secret"),
|
||||
users: repo.NewInMemoryUserStore(),
|
||||
}
|
||||
}
|
||||
7
iam/internal/transport/events.go
Normal file
7
iam/internal/transport/events.go
Normal file
@@ -0,0 +1,7 @@
|
||||
package transport
|
||||
|
||||
type Emitter struct{}
|
||||
|
||||
func NewEmitter() *Emitter {
|
||||
return &Emitter{}
|
||||
}
|
||||
5
iam/internal/util/ids.go
Normal file
5
iam/internal/util/ids.go
Normal file
@@ -0,0 +1,5 @@
|
||||
package util
|
||||
|
||||
func NextID() int64 {
|
||||
return 1
|
||||
}
|
||||
3
iam/migrations/README.md
Normal file
3
iam/migrations/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# migrations
|
||||
|
||||
Database migrations placeholder.
|
||||
3
iam/pkg/README.md
Normal file
3
iam/pkg/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# pkg
|
||||
|
||||
Shared packages for reuse across services (placeholder).
|
||||
3
iam/scripts/README.md
Normal file
3
iam/scripts/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# scripts
|
||||
|
||||
Ops scripts placeholder.
|
||||
3
iam/test/README.md
Normal file
3
iam/test/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# test
|
||||
|
||||
Integration tests placeholder.
|
||||
Reference in New Issue
Block a user