package orm import ( "crypto/sha1" "encoding/base64" "fmt" "strings" ) type Credential struct { Name string Surname string Username string Password string PlainPassword string Email string AltEmail string TelephoneNumber string } func (c *Credential) sanitize(s string) string { lower := strings.ToLower(s) r := strings.NewReplacer("'", "", "-", "", " ", "", "ò", "o", "ì", "i") return r.Replace(lower) } func (c *Credential) GenerateUsername() string { return strings.Join([]string{c.sanitize(c.Name), c.sanitize(c.Surname)}, ".") } func (c *Credential) GenerateSaltedPassword(password string) string { bs := sha1.Sum([]byte(password + "salt")) str := base64.StdEncoding.EncodeToString(append(bs[:], []byte("salt")...)) return fmt.Sprintf("%s", str) } func (c *Credential) CompleteName() string { return fmt.Sprintf("%s, %s", c.Name, c.Surname) }