diff --git a/internal/handler/login.go b/internal/handler/login.go index e3e9b37..276a716 100644 --- a/internal/handler/login.go +++ b/internal/handler/login.go @@ -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 { diff --git a/internal/handler/mock_store.go b/internal/handler/mock_store.go index 88bbaa2..51c1df6 100644 --- a/internal/handler/mock_store.go +++ b/internal/handler/mock_store.go @@ -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) } diff --git a/internal/handler/register.go b/internal/handler/register.go index 5c04797..dc0d3d4 100644 --- a/internal/handler/register.go +++ b/internal/handler/register.go @@ -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{} diff --git a/internal/handler/utility_test.go b/internal/handler/utility_test.go index f1ff33b..714b655 100644 --- a/internal/handler/utility_test.go +++ b/internal/handler/utility_test.go @@ -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"} } diff --git a/internal/model/user.go b/internal/model/user.go index 1efefa4..e532b21 100644 --- a/internal/model/user.go +++ b/internal/model/user.go @@ -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 { diff --git a/internal/utility/token.go b/internal/utility/token.go index 1322c43..b02d2f6 100644 --- a/internal/utility/token.go +++ b/internal/utility/token.go @@ -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,