Files
virteen/internal/auth/repositories/pam_repository.go
2023-06-09 11:33:10 +02:00

32 lines
569 B
Go

package repositories
import (
"fmt"
"os"
"github.com/msteinert/pam"
)
type PamRepository struct{}
func NewPamRepository() *PamRepository {
return &PamRepository{}
}
func (pr *PamRepository) IsValidUser(user, password string) bool {
tx, err := pam.StartFunc("virteen", user, func(s pam.Style, msg string) (string, error) {
return password, nil
})
if err != nil {
panic("failed to start PAM transaction")
}
err = tx.Authenticate(pam.Silent)
if err != nil {
fmt.Fprintf(os.Stderr, "authenticate: %s\n", err.Error())
return false
}
return true
}