mirror of
https://github.com/komari-monitor/komari.git
synced 2025-10-23 03:31:56 +00:00
55 lines
1.5 KiB
Go
55 lines
1.5 KiB
Go
package cmd
|
|
|
|
import (
|
|
"os"
|
|
|
|
"github.com/komari-monitor/komari/cmd/flags"
|
|
"github.com/komari-monitor/komari/database/accounts"
|
|
"github.com/komari-monitor/komari/database/dbcore"
|
|
"github.com/komari-monitor/komari/database/models"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
var (
|
|
//Username string
|
|
NewPassword string
|
|
)
|
|
|
|
var ChpasswdCmd = &cobra.Command{
|
|
Use: "chpasswd",
|
|
Short: "Force change password",
|
|
Long: `Force change password`,
|
|
Example: `komari chpasswd -p <password>`,
|
|
Run: func(cmd *cobra.Command, args []string) {
|
|
if NewPassword == "" {
|
|
cmd.Help()
|
|
return
|
|
}
|
|
if _, err := os.Stat(flags.DatabaseFile); os.IsNotExist(err) {
|
|
cmd.Println("Database file does not exist.")
|
|
return
|
|
}
|
|
user := &models.User{}
|
|
dbcore.GetDBInstance().Model(&models.User{}).First(user)
|
|
cmd.Println("Changing password for user:", user.Username)
|
|
if err := accounts.ForceResetPassword(user.Username, NewPassword); err != nil {
|
|
cmd.Println("Error:", err)
|
|
return
|
|
}
|
|
cmd.Println("Password changed successfully, new password:", NewPassword)
|
|
|
|
if err := accounts.DeleteAllSessions(); err != nil {
|
|
cmd.Println("Unable to force logout of other devices:", err)
|
|
return
|
|
}
|
|
|
|
cmd.Println("Please restart the server to apply the changes.")
|
|
},
|
|
}
|
|
|
|
func init() {
|
|
//ChpasswdCmd.PersistentFlags().StringVarP(&Username, "user", "u", "admin", "The username of the account to change password")
|
|
ChpasswdCmd.PersistentFlags().StringVarP(&NewPassword, "password", "p", "", "New password")
|
|
RootCmd.AddCommand(ChpasswdCmd)
|
|
}
|