Implement database access for user information
This commit is contained in:
parent
161ea7fe0c
commit
82918fb782
12 changed files with 298 additions and 118 deletions
46
idp/services/database.go
Normal file
46
idp/services/database.go
Normal file
|
@ -0,0 +1,46 @@
|
|||
package services
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
type dbContextKey int
|
||||
|
||||
const (
|
||||
ctxDbConnection dbContextKey = iota
|
||||
)
|
||||
|
||||
type DatabaseParams struct {
|
||||
ConnMaxLifeTime time.Duration
|
||||
DSN string
|
||||
MaxOpenConnections int
|
||||
MaxIdleConnections int
|
||||
}
|
||||
|
||||
func NewDatabaseParams(dsn string) *DatabaseParams {
|
||||
return &DatabaseParams{
|
||||
DSN: dsn,
|
||||
ConnMaxLifeTime: time.Minute * 3,
|
||||
MaxOpenConnections: 10,
|
||||
MaxIdleConnections: 10,
|
||||
}
|
||||
}
|
||||
|
||||
func InitDatabase(ctx context.Context, params *DatabaseParams) (context.Context, error) {
|
||||
db, err := sqlx.Connect("mysql", params.DSN)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
db.SetConnMaxLifetime(params.ConnMaxLifeTime)
|
||||
db.SetMaxOpenConns(params.MaxOpenConnections)
|
||||
db.SetMaxIdleConns(params.MaxIdleConnections)
|
||||
return context.WithValue(ctx, ctxDbConnection, db), nil
|
||||
}
|
||||
|
||||
func GetDb(ctx context.Context) *sqlx.DB {
|
||||
return ctx.Value(ctxDbConnection).(*sqlx.DB)
|
||||
}
|
|
@ -66,5 +66,9 @@ func AddMessages(ctx context.Context) {
|
|||
ID: "Scope-email-Description",
|
||||
Other: "Access your primary email address.",
|
||||
}
|
||||
messages["WrongOrLockedUserOrInvalidPassword"] = &i18n.Message{
|
||||
ID: "WrongOrLockedUserOrInvalidPassword",
|
||||
Other: "You entered an invalid username or password or your account has been locked.",
|
||||
}
|
||||
services.GetMessageCatalog(ctx).AddMessages(messages)
|
||||
}
|
||||
|
|
Reference in a new issue