49 lines
900 B
Go
Executable File
49 lines
900 B
Go
Executable File
package server
|
|
|
|
import (
|
|
"local/oauth2/oauth2server/config"
|
|
"local/router"
|
|
"local/storage"
|
|
|
|
"golang.org/x/time/rate"
|
|
)
|
|
|
|
var wildcard = router.Wildcard
|
|
|
|
const (
|
|
USERS = "users"
|
|
ACCESS = "access"
|
|
TOKEN = "token"
|
|
SALT = "salt"
|
|
)
|
|
|
|
type Server struct {
|
|
*router.Router
|
|
store storage.DB
|
|
limiter *rate.Limiter
|
|
}
|
|
|
|
func New() *Server {
|
|
store, err := storage.New(storage.TypeFromString(config.Store), config.StoreAddr, config.StoreUser, config.StorePass)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
purgeIssuedCredentials(store)
|
|
return &Server{
|
|
Router: router.New(),
|
|
store: store,
|
|
limiter: rate.NewLimiter(1, 3),
|
|
}
|
|
}
|
|
|
|
func purgeIssuedCredentials(store storage.DB) {
|
|
accesses, _ := store.List([]string{ACCESS})
|
|
for _, access := range accesses {
|
|
store.Set(access, nil, ACCESS)
|
|
}
|
|
tokens, _ := store.List([]string{TOKEN})
|
|
for _, token := range tokens {
|
|
store.Set(token, nil, TOKEN)
|
|
}
|
|
}
|