Authenticate UI
This commit is contained in:
@@ -10,7 +10,9 @@ import (
|
||||
|
||||
type user struct {
|
||||
ID string `json:"id" orm:"pk;column(id)"`
|
||||
Name string `json:"name" orm:"index"`
|
||||
UserName string `json:"userName" orm:"index;unique"`
|
||||
Name string `json:"name"`
|
||||
Email string `json:"email" orm:"unique"`
|
||||
Password string `json:"password"`
|
||||
IsAdmin bool `json:"isAdmin"`
|
||||
LastLoginAt *time.Time `json:"lastLoginAt" orm:"null"`
|
||||
@@ -24,6 +26,12 @@ type userRepository struct {
|
||||
userResource model.ResourceRepository
|
||||
}
|
||||
|
||||
func NewUserRepository(o orm.Ormer) model.UserRepository {
|
||||
r := &userRepository{ormer: o}
|
||||
r.userResource = NewResource(o, model.User{}, new(user))
|
||||
return r
|
||||
}
|
||||
|
||||
func (r *userRepository) CountAll(qo ...model.QueryOptions) (int64, error) {
|
||||
if len(qo) > 0 {
|
||||
return r.userResource.Count(rest.QueryOptions(qo[0]))
|
||||
@@ -41,22 +49,36 @@ func (r *userRepository) Get(id string) (*model.User, error) {
|
||||
}
|
||||
|
||||
func (r *userRepository) Put(u *model.User) error {
|
||||
tu := user(*u)
|
||||
c, err := r.CountAll()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if c == 0 {
|
||||
mappedUser := user(*u)
|
||||
_, err = r.userResource.Save(&mappedUser)
|
||||
_, err = r.userResource.Save(&tu)
|
||||
return err
|
||||
}
|
||||
return r.userResource.Update(u, "name", "is_admin", "password")
|
||||
return r.userResource.Update(&tu, "user_name", "is_admin", "password")
|
||||
}
|
||||
|
||||
func NewUserRepository(o orm.Ormer) model.UserRepository {
|
||||
r := &userRepository{ormer: o}
|
||||
r.userResource = NewResource(o, model.User{}, new(user))
|
||||
return r
|
||||
func (r *userRepository) FindByUsername(username string) (*model.User, error) {
|
||||
tu := user{}
|
||||
err := r.ormer.QueryTable(user{}).Filter("user_name", username).One(&tu)
|
||||
if err == orm.ErrNoRows {
|
||||
return nil, model.ErrNotFound
|
||||
}
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
u := model.User(tu)
|
||||
return &u, err
|
||||
}
|
||||
|
||||
func (r *userRepository) UpdateLastLoginAt(id string) error {
|
||||
now := time.Now()
|
||||
tu := user{ID: id, LastLoginAt: &now}
|
||||
_, err := r.ormer.Update(&tu, "last_login_at")
|
||||
return err
|
||||
}
|
||||
|
||||
var _ = model.User(user{})
|
||||
|
||||
Reference in New Issue
Block a user