go-asink/server/users.go
Aaron Lindsay 4d7d82ed94 Make watcher scan all directories for client, start adding user
management to server with socket communication via admin binary
2013-08-23 00:10:52 -04:00

36 lines
502 B
Go

package server
import (
"crypto/sha256"
"fmt"
)
type UserRole uint32
const (
//User roles
ADMIN = 1 << iota
NORMAL
)
type User struct {
Id int64
Username string
PWHash string
Role UserRole
}
func HashPassword(pw string) string {
hashfn := sha256.New()
hashfn.Write([]byte(pw))
return fmt.Sprintf("%x", hashfn.Sum(nil))
}
func (u *User) ValidPassword(pw string) bool {
return HashPassword(pw) == u.PWHash
}
func (u *User) IsAdmin() bool {
return u.Role&ADMIN == ADMIN
}