Spaces:
Configuration error
Configuration error
| package services | |
| import ( | |
| "errors" | |
| "api.qobiltu.id/middleware" | |
| "api.qobiltu.id/models" | |
| "api.qobiltu.id/repositories" | |
| ) | |
| type LoginConstructor struct { | |
| Email string | |
| Password string | |
| } | |
| type AuthenticationService struct { | |
| Service[LoginConstructor, models.AuthenticatedUser] | |
| } | |
| func (s *AuthenticationService) Authenticate() { | |
| accountData := repositories.GetAccountbyEmail(s.Constructor.Email) | |
| if accountData.NoRecord { | |
| s.Exception.DataNotFound = true | |
| s.Exception.Message = "there is no account with given credentials!" | |
| return | |
| } | |
| if middleware.VerifyPassword(accountData.Result.Password, s.Constructor.Password) != nil { | |
| s.Exception.Unauthorized = true | |
| s.Exception.Message = "incorrect password!" | |
| return | |
| } | |
| token, err_tok := middleware.GenerateToken(&accountData.Result) | |
| if err_tok != nil { | |
| s.Error = errors.Join(s.Error, err_tok) | |
| } | |
| accountData.Result.Password = "SECRET" | |
| s.Result = models.AuthenticatedUser{ | |
| Account: accountData.Result, | |
| Token: token, | |
| } | |
| s.Error = accountData.RowsError | |
| } | |
| // LoginHandler handles user login | |