Combine server into single 'git-style' executable
This commit is contained in:
35
asinkd/users.go
Normal file
35
asinkd/users.go
Normal file
@ -0,0 +1,35 @@
|
||||
package main
|
||||
|
||||
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
|
||||
}
|
Reference in New Issue
Block a user