53 lines
1022 B
Go
53 lines
1022 B
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"h4kor/owl-blogs"
|
||
|
"math/rand"
|
||
|
|
||
|
"github.com/spf13/cobra"
|
||
|
)
|
||
|
|
||
|
func init() {
|
||
|
rootCmd.AddCommand(resetPasswordCmd)
|
||
|
}
|
||
|
|
||
|
var resetPasswordCmd = &cobra.Command{
|
||
|
Use: "reset-password",
|
||
|
Short: "Reset the password for a user",
|
||
|
Long: `Reset the password for a user`,
|
||
|
Run: func(cmd *cobra.Command, args []string) {
|
||
|
if user == "" {
|
||
|
println("Username is required")
|
||
|
return
|
||
|
}
|
||
|
|
||
|
repo, err := owl.OpenRepository(repoPath)
|
||
|
if err != nil {
|
||
|
println("Error opening repository: ", err.Error())
|
||
|
return
|
||
|
}
|
||
|
|
||
|
user, err := repo.GetUser(user)
|
||
|
if err != nil {
|
||
|
println("Error getting user: ", err.Error())
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// generate a random password and print it
|
||
|
const chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
|
||
|
|
||
|
b := make([]byte, 16)
|
||
|
for i := range b {
|
||
|
b[i] = chars[rand.Intn(len(chars))]
|
||
|
}
|
||
|
password := string(b)
|
||
|
|
||
|
user.ResetPassword(password)
|
||
|
|
||
|
fmt.Println("User: ", user.Name())
|
||
|
fmt.Println("New Password: ", password)
|
||
|
|
||
|
},
|
||
|
}
|