user.go

 1package config
 2
 3import (
 4	"net/mail"
 5
 6	"github.com/charmbracelet/soft-serve/proto"
 7	"github.com/charmbracelet/soft-serve/server/db/types"
 8	"golang.org/x/crypto/ssh"
 9)
10
11var _ proto.User = &user{}
12
13type user struct {
14	user *types.User
15	keys []*types.PublicKey
16}
17
18func (u *user) Name() string {
19	return u.user.Name
20}
21
22func (u *user) Email() *mail.Address {
23	return u.user.Address()
24}
25
26func (u *user) Login() *string {
27	return u.user.Login
28}
29
30func (u *user) Password() *string {
31	return u.user.Password
32}
33
34func (u *user) IsAdmin() bool {
35	return u.user.Admin
36}
37
38func (u *user) PublicKeys() []ssh.PublicKey {
39	ks := make([]ssh.PublicKey, len(u.keys))
40	for i, k := range u.keys {
41		ks[i] = k
42	}
43	return ks
44}