Using textsender-models now

This commit is contained in:
phoenix
2025-11-01 17:21:27 -04:00
parent 12f8b18524
commit 25c283434d
6 changed files with 43 additions and 37 deletions
+4 -3
View File
@@ -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 {
+10 -10
View File
@@ -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)
}
+2 -1
View File
@@ -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{}
+3 -3
View File
@@ -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
View File
@@ -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 {
+8 -8
View File
@@ -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,