diff options
Diffstat (limited to 'pkg/components/auth/controller.go')
-rw-r--r-- | pkg/components/auth/controller.go | 77 |
1 files changed, 0 insertions, 77 deletions
diff --git a/pkg/components/auth/controller.go b/pkg/components/auth/controller.go deleted file mode 100644 index 0b08fcc..0000000 --- a/pkg/components/auth/controller.go +++ /dev/null @@ -1,77 +0,0 @@ -package auth - -import ( - "context" - - "golang.org/x/crypto/bcrypt" - - "git.sr.ht/~gabrielgio/img/pkg/components" - "git.sr.ht/~gabrielgio/img/pkg/database/repository" - "git.sr.ht/~gabrielgio/img/pkg/ext" -) - -type Controller struct { - authRepository repository.AuthRepository - userRepository repository.UserRepository - key []byte -} - -func NewController( - authRepository repository.AuthRepository, - userRepository repository.UserRepository, - key []byte, -) *Controller { - return &Controller{ - authRepository: authRepository, - userRepository: userRepository, - key: key, - } -} - -func (c *Controller) Login(ctx context.Context, username, password []byte) ([]byte, error) { - id, err := c.authRepository.GetIDByUsername(ctx, string(username)) - if err != nil { - return nil, err - } - - hashedPassword, err := c.authRepository.GetPassword(ctx, id) - if err != nil { - return nil, err - } - - if err := bcrypt.CompareHashAndPassword(hashedPassword, password); err != nil { - return nil, err - } - - token := &ext.Token{ - UserID: id, - Username: string(username), - } - return ext.WriteToken(token, c.key) -} - -// InitialRegister register a initial user, it will validate if there is another -// user stored already. If so an error `InvlidaInput` will be returned -func (c *Controller) InitialRegister(ctx context.Context, username, password []byte, path []byte) error { - exist, err := c.userRepository.Any(ctx) - if err != nil { - return err - } - - if exist { - return components.InvlidaInput - } - - hash, err := bcrypt.GenerateFromPassword(password, bcrypt.MinCost) - if err != nil { - return err - } - - _, err = c.userRepository.Create(ctx, &repository.CreateUser{ - Username: string(username), - Password: hash, - Path: string(path), - }) - - return err -} |