mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-05-23 17:52:36 -04:00
Add configuration table
This commit is contained in:
parent
d285603716
commit
dfc411e5f6
3
.gitignore
vendored
3
.gitignore
vendored
@ -7,4 +7,5 @@ log.html
|
|||||||
output.xml
|
output.xml
|
||||||
report.html
|
report.html
|
||||||
chart/charts
|
chart/charts
|
||||||
chart/Chart.lock
|
chart/Chart.lock
|
||||||
|
tmp
|
||||||
|
@ -40,22 +40,21 @@ func (h *Handler) Register(c echo.Context) error {
|
|||||||
Username: req.Username,
|
Username: req.Username,
|
||||||
Email: req.Email,
|
Email: req.Email,
|
||||||
Password: &pass,
|
Password: &pass,
|
||||||
// TODO: Use configured value.
|
Claims: h.config.DefaultClaims,
|
||||||
Claims: []byte{},
|
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return echo.NewHTTPError(409, "Email or username already taken")
|
return echo.NewHTTPError(409, "Email or username already taken")
|
||||||
}
|
}
|
||||||
user := MapDbUser(&duser)
|
user := MapDbUser(&duser)
|
||||||
return createToken(c, &user)
|
return h.createToken(c, &user)
|
||||||
}
|
}
|
||||||
|
|
||||||
func createToken(c echo.Context, user *User) error {
|
func (h *Handler) createToken(c echo.Context, user *User) error {
|
||||||
claims := &jwt.RegisteredClaims{
|
claims := &jwt.RegisteredClaims{
|
||||||
Subject: user.ID.String(),
|
Subject: user.ID.String(),
|
||||||
}
|
}
|
||||||
token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
|
token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
|
||||||
t, err := token.SignedString(h.jwtSecret)
|
t, err := token.SignedString(h.config.JwtSecret)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,54 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"crypto/rand"
|
||||||
|
"encoding/base64"
|
||||||
|
|
||||||
|
"github.com/zoriya/kyoo/keibi/dbc"
|
||||||
|
)
|
||||||
|
|
||||||
type Configuration struct {
|
type Configuration struct {
|
||||||
JwtSecret string
|
JwtSecret []byte
|
||||||
DefaultClaims []byte
|
DefaultClaims []byte
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
JwtSecret = "jwt_secret"
|
||||||
|
)
|
||||||
|
|
||||||
|
func LoadConfiguration(db *dbc.Queries) (*Configuration, error) {
|
||||||
|
ctx := context.Background()
|
||||||
|
confs, err := db.LoadConfig(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
ret := Configuration{}
|
||||||
|
|
||||||
|
for _, conf := range confs {
|
||||||
|
switch conf.Key {
|
||||||
|
case JwtSecret:
|
||||||
|
secret, err := base64.StdEncoding.DecodeString(conf.Value)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
ret.JwtSecret = secret
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ret.JwtSecret == nil {
|
||||||
|
ret.JwtSecret = make([]byte, 128)
|
||||||
|
rand.Read(ret.JwtSecret)
|
||||||
|
|
||||||
|
_, err := db.SaveConfig(ctx, dbc.SaveConfigParams{
|
||||||
|
Key: JwtSecret,
|
||||||
|
Value: base64.StdEncoding.EncodeToString(ret.JwtSecret),
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return &ret, nil
|
||||||
|
}
|
||||||
|
@ -124,6 +124,12 @@ func main() {
|
|||||||
h := Handler{
|
h := Handler{
|
||||||
db: dbc.New(db),
|
db: dbc.New(db),
|
||||||
}
|
}
|
||||||
|
conf, err := LoadConfiguration(h.db)
|
||||||
|
if err != nil {
|
||||||
|
e.Logger.Fatal("Could not load configuration: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
h.config = conf
|
||||||
|
|
||||||
e.GET("/users", h.ListUsers)
|
e.GET("/users", h.ListUsers)
|
||||||
|
|
||||||
|
5
auth/sql/migrations/000002_config.down.sql
Normal file
5
auth/sql/migrations/000002_config.down.sql
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
begin;
|
||||||
|
|
||||||
|
drop table config;
|
||||||
|
|
||||||
|
commit;
|
8
auth/sql/migrations/000002_config.up.sql
Normal file
8
auth/sql/migrations/000002_config.up.sql
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
begin;
|
||||||
|
|
||||||
|
create table config(
|
||||||
|
key varchar(256) not null primary key,
|
||||||
|
value text not null
|
||||||
|
);
|
||||||
|
|
||||||
|
commit;
|
21
auth/sql/queries/config.sql
Normal file
21
auth/sql/queries/config.sql
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
-- name: LoadConfig :many
|
||||||
|
select
|
||||||
|
*
|
||||||
|
from
|
||||||
|
config;
|
||||||
|
|
||||||
|
-- name: SaveConfig :one
|
||||||
|
insert into config(key, value)
|
||||||
|
values ($1, $2)
|
||||||
|
on conflict (key)
|
||||||
|
do update set
|
||||||
|
value = excluded.value
|
||||||
|
returning
|
||||||
|
*;
|
||||||
|
|
||||||
|
-- name: DeleteConfig :one
|
||||||
|
delete from config
|
||||||
|
where key = $1
|
||||||
|
returning
|
||||||
|
*;
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user