working on auth
This commit is contained in:
@@ -17,15 +17,10 @@ import (
|
||||
"gitserver.in/patialtech/rano/graph/model"
|
||||
"gitserver.in/patialtech/rano/util/crypto"
|
||||
"gitserver.in/patialtech/rano/util/logger"
|
||||
"gitserver.in/patialtech/rano/util/uid"
|
||||
)
|
||||
|
||||
type (
|
||||
SessionUser struct {
|
||||
ID string
|
||||
Email string
|
||||
Name string
|
||||
RoleID int
|
||||
}
|
||||
AuthUser = model.AuthUser
|
||||
)
|
||||
|
||||
@@ -37,7 +32,7 @@ var (
|
||||
)
|
||||
|
||||
func CtxWithUser(ctx context.Context, u *AuthUser) context.Context {
|
||||
return context.WithValue(ctx, config.AuthUserCtxKey, &SessionUser{
|
||||
return context.WithValue(ctx, config.AuthUserCtxKey, &AuthUser{
|
||||
ID: u.ID,
|
||||
Email: u.Email,
|
||||
Name: u.Name,
|
||||
@@ -45,8 +40,8 @@ func CtxWithUser(ctx context.Context, u *AuthUser) context.Context {
|
||||
})
|
||||
}
|
||||
|
||||
func CtxUser(ctx context.Context) *SessionUser {
|
||||
u, _ := ctx.Value(config.AuthUserCtxKey).(*SessionUser)
|
||||
func CtxUser(ctx context.Context) *AuthUser {
|
||||
u, _ := ctx.Value(config.AuthUserCtxKey).(*AuthUser)
|
||||
return u
|
||||
}
|
||||
|
||||
@@ -62,16 +57,35 @@ func NewSession(ctx context.Context, email, pwd string) (*AuthUser, error) {
|
||||
|
||||
// 30 day token life
|
||||
until := time.Now().Add(time.Hour * 24 * 30).UTC()
|
||||
// user IP
|
||||
ip, _ := ctx.Value("RequestIP").(string)
|
||||
// user Agent
|
||||
ua, _ := ctx.Value("RequestUA").(string)
|
||||
|
||||
// create sesion entry in db
|
||||
db.Client().UserSession.Create().
|
||||
// create session entry in db
|
||||
s, err := db.Client().UserSession.Create().
|
||||
SetUserID(u.ID).
|
||||
SetIssuedAt(time.Now().UTC()).
|
||||
SetExpiresAt(until).
|
||||
SetIP("").
|
||||
SetUserAgent("")
|
||||
SetIP(ip).
|
||||
SetUserAgent(ua).
|
||||
Save(ctx)
|
||||
if err != nil {
|
||||
logger.Error(err)
|
||||
return nil, ErrUnexpected
|
||||
}
|
||||
|
||||
sid, err := uid.Encode(
|
||||
uint64(u.ID),
|
||||
uint64(s.ID),
|
||||
)
|
||||
if err != nil {
|
||||
logger.Error(err)
|
||||
return nil, ErrUnexpected
|
||||
}
|
||||
|
||||
return &AuthUser{
|
||||
ID: sid,
|
||||
Name: fullName(u.FirstName, *u.MiddleName, u.LastName),
|
||||
}, nil
|
||||
}
|
||||
|
@@ -19,11 +19,11 @@ var (
|
||||
// newTokenToVerifyEmail for a user for given duration
|
||||
func newTokenToVerifyEmail(userID int64, d time.Duration) (string, error) {
|
||||
expiresAt := time.Now().Add(d).UTC().UnixMilli()
|
||||
return uid.Encode([]uint64{
|
||||
return uid.Encode(
|
||||
uint64(userID),
|
||||
1, // identifies that its token to verify email
|
||||
uint64(expiresAt),
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
// tokenToVerifyEmail will check for valid email token that is yet not expired
|
||||
|
Reference in New Issue
Block a user