This commit is contained in:
Wancat
2022-10-20 09:33:05 +08:00
parent 48051a5874
commit b7bad122e6
4 changed files with 108 additions and 0 deletions

50
auth/auth.go Normal file
View File

@@ -0,0 +1,50 @@
package auth
import (
"errors"
"io/ioutil"
"log"
"golang.org/x/crypto/bcrypt"
)
type AuthStore interface {
Register(user, pass string) error
Authenticate(user, pass string) error
Remove(user string) error
}
type Htpasswd struct {
accounts map[string]string
filePath string
}
func NewHtpasswd(path string) (AuthStore, error) {
_, err := ioutil.ReadFile(path)
if err != nil {
return Htpasswd{}, err
}
return Htpasswd{}, nil
}
func (s Htpasswd) Register(user, pass string) (err error) {
s.accounts[user], err = hash(pass)
if err != nil {
return
}
log.Println(s.accounts[user])
return
}
func (s Htpasswd) Authenticate(user, pass string) (err error) {
return errors.New("work in progress")
}
func (s Htpasswd) Remove(user string) (err error) {
return errors.New("work in progress")
}
func hash(pass string) (string, error) {
output, err := bcrypt.GenerateFromPassword([]byte(pass), bcrypt.DefaultCost)
return string(output), err
}