Advertisement
Guest User

Untitled

a guest
Jul 15th, 2016
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. // WARNING: This command is supposed to be used only by admin
  2.  
  3. package main
  4.  
  5. import (
  6. "flag"
  7. "fmt"
  8. "log"
  9.  
  10. "code.launchyard.com/root/myserver/config"
  11. "code.launchyard.com/root/myserver/models"
  12. "code.launchyard.com/root/myserver/utils"
  13. )
  14.  
  15. // Saver is a interface that wraps the 'Save' behaviour of user
  16. type Saver interface {
  17. Save() *models.AppError
  18. }
  19.  
  20. var defaultUserGetter = func(email string) *models.User {
  21. user, err := models.GetUserByEmail(email)
  22. if err != nil {
  23. log.Fatalf("failed password-reset: %v\n", err)
  24. }
  25. return user
  26. }
  27.  
  28. var defaultPasswordSaver = func(s Saver) {
  29. if err := s.Save(); err != nil {
  30. log.Fatalf("error saving new password: %v\n", err)
  31. }
  32. }
  33.  
  34. var (
  35. email = flag.String("email", "", "user's email to reset the password")
  36. password = flag.String("password", "", "new password")
  37. userGetter = defaultUserGetter
  38. savePassword = defaultPasswordSaver
  39. )
  40.  
  41. func main() {
  42. flag.Parse()
  43. if *email == "" {
  44. fmt.Print("email: ")
  45. fmt.Scanln(email)
  46. }
  47. if *password == "" {
  48. fmt.Print("new-password: ")
  49. fmt.Scanln(password)
  50. }
  51. models.InitModel(config.DBDriver, fmt.Sprintf(config.DBDataSource))
  52. ResetPassword(*email, *password)
  53. fmt.Println("Password reset success.")
  54. }
  55.  
  56. // ResetPassword takes email and new-password and resets the password with new-password
  57. func ResetPassword(email, newPassword string) {
  58. user := userGetter(email)
  59. user.Password = utils.HashString(newPassword)
  60. savePassword(user)
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement