Using textsender-models now
This commit is contained in:
@@ -7,6 +7,7 @@ import (
|
||||
"git.kundeng.us/phoenix/textsender-auth/internal/config"
|
||||
"git.kundeng.us/phoenix/textsender-auth/internal/model"
|
||||
"git.kundeng.us/phoenix/textsender-auth/internal/utility"
|
||||
"git.kundeng.us/phoenix/textsender-models/pkg/token"
|
||||
)
|
||||
|
||||
type LoginAccount struct {
|
||||
@@ -16,7 +17,7 @@ type LoginAccount struct {
|
||||
|
||||
type LoginResponse struct {
|
||||
Message string `json:"message"`
|
||||
Data []model.Login `json:"data"`
|
||||
Data []token.Login `json:"data"`
|
||||
}
|
||||
|
||||
type LoginHandler struct {
|
||||
@@ -62,13 +63,13 @@ func (l *LoginHandler) Login(w http.ResponseWriter, r *http.Request) {
|
||||
var tokGen utility.TokenGenerator
|
||||
secretKey := config.GetSecretKey()
|
||||
tokGen.SetSecretKey(secretKey)
|
||||
if token, err := tokGen.GenerateToken(*user); err != nil {
|
||||
if myToken, err := tokGen.GenerateToken(*user); err != nil {
|
||||
fmt.Println(err.Error())
|
||||
statusCode = http.StatusInternalServerError
|
||||
resp.Message = "Error generating token"
|
||||
} else {
|
||||
statusCode = http.StatusOK
|
||||
resp.Data = append(resp.Data, *token)
|
||||
resp.Data = append(resp.Data, *myToken)
|
||||
resp.Message = "Successful"
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -7,24 +7,24 @@ import (
|
||||
|
||||
"github.com/google/uuid"
|
||||
|
||||
"git.kundeng.us/phoenix/textsender-auth/internal/model"
|
||||
"git.kundeng.us/phoenix/textsender-models/pkg/user"
|
||||
)
|
||||
|
||||
type MockUserStore struct {
|
||||
Users map[uuid.UUID]*model.User
|
||||
UsersByUsername map[string]*model.User
|
||||
Users map[uuid.UUID]*user.User
|
||||
UsersByUsername map[string]*user.User
|
||||
mu sync.RWMutex
|
||||
Error error // Optional: simulate errors
|
||||
}
|
||||
|
||||
func NewMockUserStore() *MockUserStore {
|
||||
return &MockUserStore{
|
||||
Users: make(map[uuid.UUID]*model.User),
|
||||
UsersByUsername: make(map[string]*model.User),
|
||||
Users: make(map[uuid.UUID]*user.User),
|
||||
UsersByUsername: make(map[string]*user.User),
|
||||
}
|
||||
}
|
||||
|
||||
func (m *MockUserStore) CreateUser(ctx context.Context, user *model.User) error {
|
||||
func (m *MockUserStore) CreateUser(ctx context.Context, user *user.User) error {
|
||||
m.mu.Lock()
|
||||
defer m.mu.Unlock()
|
||||
|
||||
@@ -45,7 +45,7 @@ func (m *MockUserStore) CreateUser(ctx context.Context, user *model.User) error
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *MockUserStore) GetUserByID(ctx context.Context, id uuid.UUID) (*model.User, error) {
|
||||
func (m *MockUserStore) GetUserByID(ctx context.Context, id uuid.UUID) (*user.User, error) {
|
||||
m.mu.Lock()
|
||||
defer m.mu.Unlock()
|
||||
|
||||
@@ -65,7 +65,7 @@ func (m *MockUserStore) GetUserByID(ctx context.Context, id uuid.UUID) (*model.U
|
||||
return user, nil
|
||||
}
|
||||
|
||||
func (m *MockUserStore) GetUserByUsername(ctx context.Context, username string) (*model.User, error) {
|
||||
func (m *MockUserStore) GetUserByUsername(ctx context.Context, username string) (*user.User, error) {
|
||||
m.mu.Lock()
|
||||
defer m.mu.Unlock()
|
||||
|
||||
@@ -81,7 +81,7 @@ func (m *MockUserStore) GetUserByUsername(ctx context.Context, username string)
|
||||
return user, nil
|
||||
}
|
||||
|
||||
func (m *MockUserStore) GetAllUsers(ctx context.Context) ([]*model.User, error) {
|
||||
func (m *MockUserStore) GetAllUsers(ctx context.Context) ([]*user.User, error) {
|
||||
m.mu.Lock()
|
||||
defer m.mu.Unlock()
|
||||
|
||||
@@ -89,7 +89,7 @@ func (m *MockUserStore) GetAllUsers(ctx context.Context) ([]*model.User, error)
|
||||
return nil, m.Error
|
||||
}
|
||||
|
||||
users := make([]*model.User, 0, len(m.Users))
|
||||
users := make([]*user.User, 0, len(m.Users))
|
||||
for _, user := range m.Users {
|
||||
users = append(users, user)
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
|
||||
"git.kundeng.us/phoenix/textsender-auth/internal/model"
|
||||
"git.kundeng.us/phoenix/textsender-auth/internal/utility"
|
||||
"git.kundeng.us/phoenix/textsender-models/pkg/user"
|
||||
)
|
||||
|
||||
type RegisterUser struct {
|
||||
@@ -49,7 +50,7 @@ func (h *UserHandler) Register(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
defer r.Body.Close()
|
||||
|
||||
user := model.User{Username: req.Username, Password: req.Password, PhoneNumber: req.PhoneNumber}
|
||||
user := user.User{Username: req.Username, Password: req.Password, PhoneNumber: req.PhoneNumber}
|
||||
|
||||
var statusCode int
|
||||
resp := RegisterResponse{}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"git.kundeng.us/phoenix/textsender-auth/internal/model"
|
||||
"git.kundeng.us/phoenix/textsender-models/pkg/user"
|
||||
)
|
||||
|
||||
func GetTestUser() model.User {
|
||||
return model.User{Username: "ghost", PhoneNumber: "+1234567890", Password: "dfgdffddfd"}
|
||||
func GetTestUser() user.User {
|
||||
return user.User{Username: "ghost", PhoneNumber: "+1234567890", Password: "dfgdffddfd"}
|
||||
}
|
||||
|
||||
+16
-12
@@ -7,20 +7,24 @@ import (
|
||||
"github.com/google/uuid"
|
||||
"github.com/jackc/pgx/v5"
|
||||
"github.com/jackc/pgx/v5/pgxpool"
|
||||
|
||||
"git.kundeng.us/phoenix/textsender-models/pkg/user"
|
||||
)
|
||||
|
||||
/*
|
||||
type User struct {
|
||||
Id uuid.UUID `json:"id"`
|
||||
PhoneNumber string `json:"phone_number"`
|
||||
Username string `json:"username"`
|
||||
Password string `json:"password"`
|
||||
}
|
||||
*/
|
||||
|
||||
type UserStore interface {
|
||||
CreateUser(ctx context.Context, user *User) error
|
||||
GetUserByID(ctx context.Context, id uuid.UUID) (*User, error)
|
||||
GetUserByUsername(ctx context.Context, username string) (*User, error)
|
||||
GetAllUsers(ctx context.Context) ([]*User, error)
|
||||
CreateUser(ctx context.Context, user *user.User) error
|
||||
GetUserByID(ctx context.Context, id uuid.UUID) (*user.User, error)
|
||||
GetUserByUsername(ctx context.Context, username string) (*user.User, error)
|
||||
GetAllUsers(ctx context.Context) ([]*user.User, error)
|
||||
UserExists(ctx context.Context, username string) (bool, error)
|
||||
}
|
||||
|
||||
@@ -32,7 +36,7 @@ func NewUserStore(db *pgxpool.Pool) *PGUserStore {
|
||||
return &PGUserStore{db: db}
|
||||
}
|
||||
|
||||
func (s *PGUserStore) CreateUser(ctx context.Context, user *User) error {
|
||||
func (s *PGUserStore) CreateUser(ctx context.Context, user *user.User) error {
|
||||
query := `
|
||||
INSERT INTO users (phone_number, username, password)
|
||||
VALUES ($1, $2, $3)
|
||||
@@ -44,10 +48,10 @@ func (s *PGUserStore) CreateUser(ctx context.Context, user *User) error {
|
||||
)
|
||||
}
|
||||
|
||||
func (s *PGUserStore) GetUserByID(ctx context.Context, id uuid.UUID) (*User, error) {
|
||||
func (s *PGUserStore) GetUserByID(ctx context.Context, id uuid.UUID) (*user.User, error) {
|
||||
query := `SELECT id, username, password, phone_number FROM users WHERE id = $1`
|
||||
|
||||
var user User
|
||||
var user user.User
|
||||
err := s.db.QueryRow(ctx, query, id).Scan(
|
||||
&user.Id, &user.Username, &user.Password, &user.PhoneNumber,
|
||||
)
|
||||
@@ -62,10 +66,10 @@ func (s *PGUserStore) GetUserByID(ctx context.Context, id uuid.UUID) (*User, err
|
||||
return &user, nil
|
||||
}
|
||||
|
||||
func (s *PGUserStore) GetUserByUsername(ctx context.Context, username string) (*User, error) {
|
||||
func (s *PGUserStore) GetUserByUsername(ctx context.Context, username string) (*user.User, error) {
|
||||
query := `SELECT id, username, password, phone_number FROM users WHERE username = $1`
|
||||
|
||||
var user User
|
||||
var user user.User
|
||||
err := s.db.QueryRow(ctx, query, username).Scan(
|
||||
&user.Id, &user.Username, &user.Password, &user.PhoneNumber,
|
||||
)
|
||||
@@ -80,7 +84,7 @@ func (s *PGUserStore) GetUserByUsername(ctx context.Context, username string) (*
|
||||
return &user, nil
|
||||
}
|
||||
|
||||
func (s *PGUserStore) GetAllUsers(ctx context.Context) ([]*User, error) {
|
||||
func (s *PGUserStore) GetAllUsers(ctx context.Context) ([]*user.User, error) {
|
||||
query := `SELECT id, username, password, phone_number FROM users`
|
||||
|
||||
rows, err := s.db.Query(ctx, query)
|
||||
@@ -89,9 +93,9 @@ func (s *PGUserStore) GetAllUsers(ctx context.Context) ([]*User, error) {
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
var users []*User
|
||||
var users []*user.User
|
||||
for rows.Next() {
|
||||
var user User
|
||||
var user user.User
|
||||
if err := rows.Scan(
|
||||
&user.Id, &user.Username, &user.Password, &user.PhoneNumber,
|
||||
); err != nil {
|
||||
|
||||
@@ -4,11 +4,11 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/golang-jwt/jwt/v5"
|
||||
"github.com/google/uuid"
|
||||
// "github.com/google/uuid"
|
||||
|
||||
"git.kundeng.us/phoenix/textsender-auth/internal/config"
|
||||
intmodels "git.kundeng.us/phoenix/textsender-auth/internal/model"
|
||||
"git.kundeng.us/phoenix/textsender-models/pkg/token"
|
||||
"git.kundeng.us/phoenix/textsender-models/pkg/user"
|
||||
)
|
||||
|
||||
const ROLE_TYPE = "regular"
|
||||
@@ -22,23 +22,23 @@ func (t *TokenGenerator) SetSecretKey(secretKey string) {
|
||||
t.SecretKey = []byte(secretKey)
|
||||
}
|
||||
|
||||
func (t *TokenGenerator) GenerateToken(user intmodels.User) (*intmodels.Login, error) {
|
||||
func (t *TokenGenerator) GenerateToken(user user.User) (*token.Login, error) {
|
||||
issuedAt := time.Now()
|
||||
expirationTime := time.Now().Add(4 * time.Hour)
|
||||
claims := t.generateClaims(user, TOKEN_TYPE, issuedAt, expirationTime)
|
||||
|
||||
token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
|
||||
if tokenString, err := token.SignedString(t.SecretKey); err != nil {
|
||||
myToken := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
|
||||
if tokenString, err := myToken.SignedString(t.SecretKey); err != nil {
|
||||
return nil, err
|
||||
} else {
|
||||
return &intmodels.Login{AccessToken: tokenString, TokenType: TOKEN_TYPE, ExpiresIn: expirationTime.Unix()}, nil
|
||||
return &token.Login{AccessToken: tokenString, TokenType: TOKEN_TYPE, ExpiresIn: expirationTime.Unix()}, nil
|
||||
}
|
||||
}
|
||||
|
||||
func (t *TokenGenerator) generateClaims(user intmodels.User, role string, issuedAt time.Time, expiredAt time.Time) token.Claims {
|
||||
func (t *TokenGenerator) generateClaims(user user.User, role string, issuedAt time.Time, expiredAt time.Time) token.Claims {
|
||||
return token.Claims{
|
||||
// UserId: user.Id.String(),
|
||||
UserId: uuid.New(),
|
||||
UserId: user.Id,
|
||||
Role: role,
|
||||
RegisteredClaims: jwt.RegisteredClaims{
|
||||
Issuer: config.App_Name,
|
||||
|
||||
Reference in New Issue
Block a user