12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- package model
- import (
- "errors"
- "github.com/andreanidouglas/auth-go/dao"
- "github.com/andreanidouglas/auth-go/internals"
- )
- type AuthUser struct {
- Id string `json:"id"`
- Username string `json:"username"`
- Password string `json:"password,omitempty"`
- }
- func (u *AuthUser) AuthenticateUser(repo *dao.UserRepository, c *internals.Crypt) (*AuthenticatedUser, error) {
- var okUser AuthenticatedUser
- user, err := repo.GetUserByUsername(u.Username)
- if err != nil {
- return nil, err
- }
- err = c.CheckPasswordHash(u.Password, user.PasswordHash)
- if err != nil {
- return nil, err
- }
- okUser.FromUser(user)
- return &okUser, nil
- }
- type GetUser struct {
- Id string `json:"id"`
- Username string `json:"username"`
-
- }
- func (u *GetUser) GetAllUsers(repo *dao.UserRepository) ([]GetUser, error) {
- var res = []GetUser{}
- users, err := repo.GetAllUsers()
- if err != nil {
- return []GetUser{}, err
- }
- for _, u := range users {
- user := GetUser{Username: u.Username, Id: u.Id}
- res = append(res, user)
- }
- return res, nil
- }
- type CreateUser struct {
- Username string `json:"username"`
- Password string `json:"password"`
- }
- func (u *CreateUser) CreateUser(repo *dao.UserRepository, c *internals.Crypt) (string, error) {
- _, err := repo.GetUserByUsername(u.Username)
- if err == nil {
- return "", errors.New("user already exists")
- }
- hashed_password, err := c.HashPassword(u.Password)
- if err != nil {
- return "", err
- }
- id := repo.AddUser(u.Username, hashed_password)
- return id, nil
- }
- type AuthenticatedUser struct {
- Id string `json:"id"`
- Username string `json:"username"`
- }
- func (u *AuthenticatedUser) FromUser (user dao.User) {
- u.Id = user.Id;
- u.Username = user.Username
- }
|