credential.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package orm
  2. import (
  3. "crypto/sha1"
  4. "encoding/base64"
  5. "fmt"
  6. "strings"
  7. "time"
  8. "github.com/jinzhu/gorm"
  9. "github.com/sethvargo/go-password/password"
  10. )
  11. type Checkbox bool
  12. type Credential struct {
  13. gorm.Model
  14. Name string `csv:"firstname"`
  15. Surname string `csv:"lastname"`
  16. Password string
  17. PlainPassword string
  18. Email string `csv:"email"`
  19. AltEmail string
  20. DateFrom time.Time
  21. DateTo time.Time
  22. TelephoneNumber string
  23. InternalTelephoneNumber string
  24. Regenerate bool `schema:"Regenerate" sql:"default: false"`
  25. Exclude bool
  26. NotInvited bool
  27. LdapDNFmt string
  28. }
  29. func (c *Credential) sanitize(s string) string {
  30. lower := strings.ToLower(s)
  31. r := strings.NewReplacer("'", "", "-", "", " ", "", "ò", "o", "ì", "i")
  32. return r.Replace(lower)
  33. }
  34. func (c *Credential) Username() string {
  35. return strings.Join([]string{c.sanitize(c.Name), c.sanitize(c.Surname)}, ".")
  36. }
  37. func (c *Credential) GeneratePassword() (string, error) {
  38. password, err := password.Generate(8, 2, 0, false, true)
  39. if err != nil {
  40. return "", err
  41. }
  42. return password, nil
  43. }
  44. func (c *Credential) CompleteName() string {
  45. return fmt.Sprintf("%s %s", c.Name, c.Surname)
  46. }
  47. func (c *Credential) MailAddress(domain string) string {
  48. return fmt.Sprintf("%s@%s", c.Username(), domain)
  49. }
  50. func (c *Credential) DN() string {
  51. return fmt.Sprintf(c.LdapDNFmt, c.Name, c.Surname)
  52. }
  53. func (c *Credential) GetName() string {
  54. return c.Name
  55. }
  56. func (c *Credential) GetSurname() string {
  57. return c.Surname
  58. }
  59. func (c *Credential) GetExclude() bool {
  60. return c.Exclude
  61. }
  62. func (c *Credential) IsInvited() bool {
  63. return !c.NotInvited
  64. }
  65. func (c *Credential) GetRegenerate() bool {
  66. return c.Regenerate
  67. }
  68. func (c *Credential) SetRegenerate(value bool) {
  69. c.Regenerate = value
  70. }
  71. func (c *Credential) GetPlainPassword() string {
  72. return c.PlainPassword
  73. }
  74. func (c *Credential) SetPlainPassword(password string) {
  75. c.PlainPassword = password
  76. }
  77. func (c *Credential) GetEmail() string {
  78. return c.Email
  79. }
  80. func (c *Credential) GetAltEmail() string {
  81. return c.AltEmail
  82. }
  83. func SaltPassword(password string) string {
  84. bs := sha1.Sum([]byte(password + "salt"))
  85. str := base64.StdEncoding.EncodeToString(append(bs[:], []byte("salt")...))
  86. return fmt.Sprintf("%s", str)
  87. }