Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // WARNING: This command is supposed to be used only by admin
- package main
- import (
- "flag"
- "fmt"
- "log"
- "code.launchyard.com/root/myserver/config"
- "code.launchyard.com/root/myserver/models"
- "code.launchyard.com/root/myserver/utils"
- )
- // Saver is a interface that wraps the 'Save' behaviour of user
- type Saver interface {
- Save() *models.AppError
- }
- var defaultUserGetter = func(email string) *models.User {
- user, err := models.GetUserByEmail(email)
- if err != nil {
- log.Fatalf("failed password-reset: %v\n", err)
- }
- return user
- }
- var defaultPasswordSaver = func(s Saver) {
- if err := s.Save(); err != nil {
- log.Fatalf("error saving new password: %v\n", err)
- }
- }
- var (
- email = flag.String("email", "", "user's email to reset the password")
- password = flag.String("password", "", "new password")
- userGetter = defaultUserGetter
- savePassword = defaultPasswordSaver
- )
- func main() {
- flag.Parse()
- if *email == "" {
- fmt.Print("email: ")
- fmt.Scanln(email)
- }
- if *password == "" {
- fmt.Print("new-password: ")
- fmt.Scanln(password)
- }
- models.InitModel(config.DBDriver, fmt.Sprintf(config.DBDataSource))
- ResetPassword(*email, *password)
- fmt.Println("Password reset success.")
- }
- // ResetPassword takes email and new-password and resets the password with new-password
- func ResetPassword(email, newPassword string) {
- user := userGetter(email)
- user.Password = utils.HashString(newPassword)
- savePassword(user)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement