package auth import ( "context" "emperror.dev/errors" "lmika.dev/lmika/weiro/models" "lmika.dev/lmika/weiro/providers/db" ) type Service struct { db *db.Provider } func New(db *db.Provider) *Service { return &Service{ db: db, } } func (s *Service) Login(ctx context.Context, username, password string) (models.User, error) { user, err := s.db.SelectUserByUsername(ctx, username) if err != nil { return models.User{}, err } if !user.CheckPassword(password) { return models.User{}, errors.New("invalid password") } return user, nil } func (s *Service) GetUser(ctx context.Context, userID int64) (models.User, error) { return s.db.SelectUserByID(ctx, userID) } func (s *Service) SetPassword(ctx context.Context, username, password string) (models.User, error) { user, err := s.db.SelectUserByUsername(ctx, username) if err != nil { return models.User{}, err } user.SetPassword(password) return user, s.db.SaveUser(ctx, &user) }