this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

backend: refactor

Clément 698a555b 52d94b97

+21 -22
+7 -7
backend/cmd/api/main.go
··· 12 12 ) 13 13 14 14 func main() { 15 - r := chi.NewRouter() 16 - r.Use(middleware.Logger) 17 - r.Use(middleware.Recoverer) 18 - 19 15 db, err := sql.Open("d1", "DB") 20 16 if err != nil { 21 17 panic(err) 22 18 } 23 19 24 - r.Get("/", handlers.Health) 25 - 26 20 sessionSvc := services.NewSessionService(db) 27 21 userSvc := services.NewUserService(db) 28 - authSvc := services.NewAuthService(db, []byte("hello"), userSvc, sessionSvc) 22 + authSvc := services.NewAuthService(db, userSvc, sessionSvc) 29 23 30 24 authHandler := handlers.NewAuthHandler(authSvc) 25 + 26 + r := chi.NewRouter() 27 + r.Use(middleware.Logger) 28 + r.Use(middleware.Recoverer) 29 + 30 + r.Get("/", handlers.Health) 31 31 32 32 r.Route("/auth", func(r chi.Router) { 33 33 r.Post("/login", authHandler.Login)
+9 -10
backend/internal/services/auth.go
··· 9 9 ) 10 10 11 11 type AuthService struct { 12 - db *sql.DB 13 - jwtSecret []byte 14 - user *UserService 15 - session *SessionService 12 + db *sql.DB 13 + user *UserService 14 + session *SessionService 16 15 } 17 16 18 - func NewAuthService(db *sql.DB, jwtSecret []byte, user *UserService, session *SessionService) *AuthService { 19 - return &AuthService{db: db, jwtSecret: jwtSecret, user: user, session: session} 17 + func NewAuthService(db *sql.DB, user *UserService, session *SessionService) *AuthService { 18 + return &AuthService{db: db, user: user, session: session} 20 19 } 21 20 22 21 var InvalidPassword = errors.New("invalid password") 23 22 24 23 // login a user by returning a new session token 25 - func (a *AuthService) Login(context context.Context, req models.LoginRequest) (string, error) { 26 - user, err := a.user.GetFromEmail(req.Email) 24 + func (s *AuthService) Login(context context.Context, req models.LoginRequest) (string, error) { 25 + user, err := s.user.GetFromEmail(req.Email) 27 26 if err != nil { 28 27 return "", err 29 28 } 30 29 31 - if valid, err := a.user.ValidatePassword(user, req.Password); err != nil { 30 + if valid, err := s.user.ValidatePassword(user, req.Password); err != nil { 32 31 return "", err 33 32 } else if !valid { 34 33 return "", InvalidPassword 35 34 } 36 35 37 - token, err := a.session.CreateForUser(user) 36 + token, err := s.session.CreateForUser(user) 38 37 if err != nil { 39 38 return "", err 40 39 }
+2 -2
backend/internal/services/session.go
··· 18 18 } 19 19 20 20 // creates a new session for the given user and returns the token 21 - func (a *SessionService) CreateForUser(user *models.User) (string, error) { 21 + func (s *SessionService) CreateForUser(user *models.User) (string, error) { 22 22 token := make([]byte, 16) 23 23 if _, err := rand.Read(token); err != nil { 24 24 return "", err ··· 29 29 UserID: user.ID, 30 30 Token: hex.EncodeToString(token), 31 31 } 32 - if _, err := a.db.Exec("insert into \"session\" (id, user_id, token) values (?, ?, ?)", 32 + if _, err := s.db.Exec("insert into \"session\" (id, user_id, token) values (?, ?, ?)", 33 33 session.ID, session.UserID, session.Token); err != nil { 34 34 return "", err 35 35 }
+3 -3
backend/internal/services/user.go
··· 17 17 } 18 18 19 19 // get a user by its email 20 - func (a *UserService) GetFromEmail(email string) (*models.User, error) { 21 - row := a.db.QueryRow("select * from \"user\" where email = ?", email) 20 + func (s *UserService) GetFromEmail(email string) (*models.User, error) { 21 + row := s.db.QueryRow("select * from \"user\" where email = ?", email) 22 22 var user models.User 23 23 if err := row.Scan(&user.ID, &user.Email, &user.PasswordHash); err != nil { 24 24 return nil, err ··· 27 27 } 28 28 29 29 // check whether a password is valid for a user 30 - func (a *UserService) ValidatePassword(user *models.User, password string) (bool, error) { 30 + func (s *UserService) ValidatePassword(user *models.User, password string) (bool, error) { 31 31 err := bcrypt.CompareHashAndPassword([]byte(user.PasswordHash), []byte(password)) 32 32 if err == nil { 33 33 return true, nil