Add login

This commit is contained in:
2020-01-05 23:20:38 +01:00
parent dc396a300f
commit c0926ffea0
35 changed files with 1647 additions and 39 deletions

39
service/user_service.go Normal file
View File

@@ -0,0 +1,39 @@
package service
import (
"hamster-tycoon/storage/dao"
"hamster-tycoon/storage/model"
"hamster-tycoon/utils"
)
type UserService struct {
serviceContext
}
func NewUserService(database dao.Database) *UserService {
return &UserService{serviceContext{db: database}}
}
func (us *UserService) GetUserFromGoogleId(googleUserId string) (*model.User, error) {
user, err := us.db.GetUsersByGoogleID(googleUserId)
if err != nil {
if castedError, ok := err.(*dao.DAOError); ok {
switch castedError.Type {
case dao.ErrTypeNotFound:
return nil, &model.ErrNotFound
default:
return nil, &model.ErrInternalServer
}
}
return nil, &model.ErrInternalServer
}
return user, nil
}
func (us *UserService) CreateUserFromGoogleToken(id string, email string) (*model.User, error) {
randNick := utils.String(20)
user := &model.User{UserEditable: model.UserEditable{Email: email, Nickname: "player-" + randNick}, GoogleId: id}
err := us.db.CreateUser(user)
return user, err
}