| package pwd |
|
|
| import ( |
| "errors" |
|
|
| "github.com/play-with-docker/play-with-docker/pwd/types" |
| "github.com/play-with-docker/play-with-docker/storage" |
| ) |
|
|
| var userBannedError = errors.New("User is banned") |
|
|
| func (p *pwd) UserNewLoginRequest(providerName string) (*types.LoginRequest, error) { |
| req := &types.LoginRequest{Id: p.generator.NewId(), Provider: providerName} |
| if err := p.storage.LoginRequestPut(req); err != nil { |
| return nil, err |
| } |
| return req, nil |
| } |
|
|
| func (p *pwd) UserGetLoginRequest(id string) (*types.LoginRequest, error) { |
| if req, err := p.storage.LoginRequestGet(id); err != nil { |
| return nil, err |
| } else { |
| return req, nil |
| } |
| } |
|
|
| func (p *pwd) UserLogin(loginRequest *types.LoginRequest, user *types.User) (*types.User, error) { |
| if err := p.storage.LoginRequestDelete(loginRequest.Id); err != nil { |
| return nil, err |
| } |
| u, err := p.storage.UserFindByProvider(user.Provider, user.ProviderUserId) |
|
|
| if err != nil { |
| if storage.NotFound(err) { |
| user.Id = p.generator.NewId() |
| if err := p.storage.UserPut(user); err != nil { |
| return nil, err |
| } |
| return user, nil |
| } |
| return nil, err |
| } |
| return u, nil |
| } |
| func (p *pwd) UserGet(id string) (*types.User, error) { |
| var user *types.User |
| var err error |
| if user, err = p.storage.UserGet(id); err != nil { |
| return nil, err |
| } else if user.IsBanned { |
| return user, userBannedError |
| } |
| return user, nil |
| } |
|
|