mirror of
https://github.com/m1k1o/neko.git
synced 2024-07-24 14:40:50 +12:00
common errors as variable.
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
package dummy
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"errors"
|
||||
|
||||
"demodesk/neko/internal/types"
|
||||
)
|
||||
@ -37,7 +37,7 @@ func (provider *MemberProviderCtx) Authenticate(username string, password string
|
||||
}
|
||||
|
||||
func (provider *MemberProviderCtx) Insert(username string, password string, profile types.MemberProfile) (string, error) {
|
||||
return "", fmt.Errorf("not implemented")
|
||||
return "", errors.New("not implemented")
|
||||
}
|
||||
|
||||
func (provider *MemberProviderCtx) Select(id string) (types.MemberProfile, error) {
|
||||
@ -54,7 +54,7 @@ func (provider *MemberProviderCtx) UpdateProfile(id string, profile types.Member
|
||||
}
|
||||
|
||||
func (provider *MemberProviderCtx) UpdatePassword(id string, password string) error {
|
||||
return fmt.Errorf("not implemented")
|
||||
return errors.New("not implemented")
|
||||
}
|
||||
|
||||
func (provider *MemberProviderCtx) Delete(id string) error {
|
||||
|
@ -2,7 +2,6 @@ package file
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
|
||||
@ -38,7 +37,7 @@ func (provider *MemberProviderCtx) Authenticate(username string, password string
|
||||
|
||||
// TODO: Use hash function.
|
||||
if entry.Password != password {
|
||||
return "", types.MemberProfile{}, fmt.Errorf("invalid password")
|
||||
return "", types.MemberProfile{}, types.ErrMemberInvalidPassword
|
||||
}
|
||||
|
||||
return id, entry.Profile, nil
|
||||
@ -55,7 +54,7 @@ func (provider *MemberProviderCtx) Insert(username string, password string, prof
|
||||
|
||||
_, ok := entries[id]
|
||||
if ok {
|
||||
return "", fmt.Errorf("member ID already exists")
|
||||
return "", types.ErrMemberAlreadyExists
|
||||
}
|
||||
|
||||
entries[id] = MemberEntry{
|
||||
@ -75,7 +74,7 @@ func (provider *MemberProviderCtx) UpdateProfile(id string, profile types.Member
|
||||
|
||||
entry, ok := entries[id]
|
||||
if !ok {
|
||||
return fmt.Errorf("member ID does not exist")
|
||||
return types.ErrMemberDoesNotExist
|
||||
}
|
||||
|
||||
entry.Profile = profile
|
||||
@ -92,7 +91,7 @@ func (provider *MemberProviderCtx) UpdatePassword(id string, password string) er
|
||||
|
||||
entry, ok := entries[id]
|
||||
if !ok {
|
||||
return fmt.Errorf("member ID does not exist")
|
||||
return types.ErrMemberDoesNotExist
|
||||
}
|
||||
|
||||
// TODO: Use hash function.
|
||||
@ -139,7 +138,7 @@ func (provider *MemberProviderCtx) Delete(id string) error {
|
||||
|
||||
_, ok := entries[id]
|
||||
if !ok {
|
||||
return fmt.Errorf("member ID does not exist")
|
||||
return types.ErrMemberDoesNotExist
|
||||
}
|
||||
|
||||
delete(entries, id)
|
||||
@ -178,7 +177,7 @@ func (provider *MemberProviderCtx) getEntry(id string) (MemberEntry, error) {
|
||||
|
||||
entry, ok := entries[id]
|
||||
if !ok {
|
||||
return MemberEntry{}, fmt.Errorf("member ID does not exist")
|
||||
return MemberEntry{}, types.ErrMemberDoesNotExist
|
||||
}
|
||||
|
||||
return entry, nil
|
||||
|
@ -1,7 +1,7 @@
|
||||
package member
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"errors"
|
||||
"sync"
|
||||
|
||||
"github.com/rs/zerolog"
|
||||
@ -41,7 +41,7 @@ type MemberManagerCtx struct {
|
||||
config *config.Member
|
||||
providerMu sync.Mutex
|
||||
provider types.MemberProvider
|
||||
sessionMu sync.Mutex
|
||||
loginMu sync.Mutex
|
||||
}
|
||||
|
||||
func (manager *MemberManagerCtx) Connect() error {
|
||||
@ -91,13 +91,10 @@ func (manager *MemberManagerCtx) UpdateProfile(id string, profile types.MemberPr
|
||||
defer manager.providerMu.Unlock()
|
||||
|
||||
// update corresponding session, if exists
|
||||
manager.sessionMu.Lock()
|
||||
if _, ok := manager.sessions.Get(id); ok {
|
||||
if err := manager.sessions.Update(id, profile); err != nil {
|
||||
manager.logger.Err(err).Msg("error while updating session")
|
||||
}
|
||||
err := manager.sessions.Update(id, profile)
|
||||
if err != nil && !errors.Is(err, types.ErrSessionNotFound) {
|
||||
manager.logger.Err(err).Msg("error while updating session")
|
||||
}
|
||||
manager.sessionMu.Unlock()
|
||||
|
||||
return manager.provider.UpdateProfile(id, profile)
|
||||
}
|
||||
@ -114,13 +111,10 @@ func (manager *MemberManagerCtx) Delete(id string) error {
|
||||
defer manager.providerMu.Unlock()
|
||||
|
||||
// destroy corresponding session, if exists
|
||||
manager.sessionMu.Lock()
|
||||
if _, ok := manager.sessions.Get(id); ok {
|
||||
if err := manager.sessions.Delete(id); err != nil {
|
||||
manager.logger.Err(err).Msg("error while deleting session")
|
||||
}
|
||||
err := manager.sessions.Delete(id)
|
||||
if err != nil && !errors.Is(err, types.ErrSessionNotFound) {
|
||||
manager.logger.Err(err).Msg("error while deleting session")
|
||||
}
|
||||
manager.sessionMu.Unlock()
|
||||
|
||||
return manager.provider.Delete(id)
|
||||
}
|
||||
@ -130,8 +124,8 @@ func (manager *MemberManagerCtx) Delete(id string) error {
|
||||
//
|
||||
|
||||
func (manager *MemberManagerCtx) Login(username string, password string) (types.Session, string, error) {
|
||||
manager.sessionMu.Lock()
|
||||
defer manager.sessionMu.Unlock()
|
||||
manager.loginMu.Lock()
|
||||
defer manager.loginMu.Unlock()
|
||||
|
||||
id, profile, err := manager.provider.Authenticate(username, password)
|
||||
if err != nil {
|
||||
@ -141,7 +135,7 @@ func (manager *MemberManagerCtx) Login(username string, password string) (types.
|
||||
session, ok := manager.sessions.Get(id)
|
||||
if ok {
|
||||
if session.State().IsConnected {
|
||||
return nil, "", fmt.Errorf("session is already connected")
|
||||
return nil, "", types.ErrSessionAlreadyConnected
|
||||
}
|
||||
|
||||
// TODO: Replace session.
|
||||
@ -154,12 +148,8 @@ func (manager *MemberManagerCtx) Login(username string, password string) (types.
|
||||
}
|
||||
|
||||
func (manager *MemberManagerCtx) Logout(id string) error {
|
||||
manager.sessionMu.Lock()
|
||||
defer manager.sessionMu.Unlock()
|
||||
|
||||
if _, ok := manager.sessions.Get(id); !ok {
|
||||
return fmt.Errorf("session not found")
|
||||
}
|
||||
manager.loginMu.Lock()
|
||||
defer manager.loginMu.Unlock()
|
||||
|
||||
return manager.sessions.Delete(id)
|
||||
}
|
||||
|
@ -1,8 +1,6 @@
|
||||
package object
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"demodesk/neko/internal/types"
|
||||
)
|
||||
|
||||
@ -60,12 +58,12 @@ func (provider *MemberProviderCtx) Authenticate(username string, password string
|
||||
|
||||
entry, ok := provider.entries[id]
|
||||
if !ok {
|
||||
return "", types.MemberProfile{}, fmt.Errorf("member ID does not exist")
|
||||
return "", types.MemberProfile{}, types.ErrMemberDoesNotExist
|
||||
}
|
||||
|
||||
// TODO: Use hash function.
|
||||
if entry.Password != password {
|
||||
return "", types.MemberProfile{}, fmt.Errorf("invalid password")
|
||||
return "", types.MemberProfile{}, types.ErrMemberInvalidPassword
|
||||
}
|
||||
|
||||
return id, entry.Profile, nil
|
||||
@ -77,7 +75,7 @@ func (provider *MemberProviderCtx) Insert(username string, password string, prof
|
||||
|
||||
_, ok := provider.entries[id]
|
||||
if ok {
|
||||
return "", fmt.Errorf("member ID already exists")
|
||||
return "", types.ErrMemberAlreadyExists
|
||||
}
|
||||
|
||||
provider.entries[id] = &MemberEntry{
|
||||
@ -92,7 +90,7 @@ func (provider *MemberProviderCtx) Insert(username string, password string, prof
|
||||
func (provider *MemberProviderCtx) UpdateProfile(id string, profile types.MemberProfile) error {
|
||||
entry, ok := provider.entries[id]
|
||||
if !ok {
|
||||
return fmt.Errorf("member ID does not exist")
|
||||
return types.ErrMemberDoesNotExist
|
||||
}
|
||||
|
||||
entry.Profile = profile
|
||||
@ -103,7 +101,7 @@ func (provider *MemberProviderCtx) UpdateProfile(id string, profile types.Member
|
||||
func (provider *MemberProviderCtx) UpdatePassword(id string, password string) error {
|
||||
entry, ok := provider.entries[id]
|
||||
if !ok {
|
||||
return fmt.Errorf("member ID does not exist")
|
||||
return types.ErrMemberDoesNotExist
|
||||
}
|
||||
|
||||
// TODO: Use hash function.
|
||||
@ -115,7 +113,7 @@ func (provider *MemberProviderCtx) UpdatePassword(id string, password string) er
|
||||
func (provider *MemberProviderCtx) Select(id string) (types.MemberProfile, error) {
|
||||
entry, ok := provider.entries[id]
|
||||
if !ok {
|
||||
return types.MemberProfile{}, fmt.Errorf("member ID does not exist")
|
||||
return types.MemberProfile{}, types.ErrMemberDoesNotExist
|
||||
}
|
||||
|
||||
return entry.Profile, nil
|
||||
@ -139,7 +137,7 @@ func (provider *MemberProviderCtx) SelectAll(limit int, offset int) (map[string]
|
||||
func (provider *MemberProviderCtx) Delete(id string) error {
|
||||
_, ok := provider.entries[id]
|
||||
if !ok {
|
||||
return fmt.Errorf("member ID does not exist")
|
||||
return types.ErrMemberDoesNotExist
|
||||
}
|
||||
|
||||
delete(provider.entries, id)
|
||||
|
Reference in New Issue
Block a user