mirror of
https://github.com/louislam/dockge.git
synced 2024-11-27 13:14:03 +00:00
Add pnpm run reset-password (#212)
This commit is contained in:
parent
bf2d4c95f9
commit
e2c81bd3e0
3 changed files with 89 additions and 4 deletions
|
@ -150,9 +150,6 @@ export class DockgeServer {
|
|||
}
|
||||
}
|
||||
|
||||
// Create all the necessary directories
|
||||
this.initDataDir();
|
||||
|
||||
// Create express
|
||||
this.app = express();
|
||||
|
||||
|
@ -255,6 +252,9 @@ export class DockgeServer {
|
|||
*
|
||||
*/
|
||||
async serve() {
|
||||
// Create all the necessary directories
|
||||
this.initDataDir();
|
||||
|
||||
// Connect to database
|
||||
try {
|
||||
await Database.init(this);
|
||||
|
|
84
extra/reset-password.ts
Normal file
84
extra/reset-password.ts
Normal file
|
@ -0,0 +1,84 @@
|
|||
import { Database } from "../backend/database";
|
||||
import { R } from "redbean-node";
|
||||
import readline from "readline";
|
||||
import { User } from "../backend/models/user";
|
||||
import { DockgeServer } from "../backend/dockge-server";
|
||||
import { log } from "../backend/log";
|
||||
|
||||
console.log("== Dockge Reset Password Tool ==");
|
||||
|
||||
const rl = readline.createInterface({
|
||||
input: process.stdin,
|
||||
output: process.stdout
|
||||
});
|
||||
|
||||
export const main = async () => {
|
||||
const server = new DockgeServer();
|
||||
|
||||
// Check if
|
||||
|
||||
console.log("Connecting the database");
|
||||
try {
|
||||
await Database.init(server);
|
||||
} catch (e) {
|
||||
if (e instanceof Error) {
|
||||
log.error("server", "Failed to connect to your database: " + e.message);
|
||||
}
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
try {
|
||||
// No need to actually reset the password for testing, just make sure no connection problem. It is ok for now.
|
||||
if (!process.env.TEST_BACKEND) {
|
||||
const user = await R.findOne("user");
|
||||
if (! user) {
|
||||
throw new Error("user not found, have you installed?");
|
||||
}
|
||||
|
||||
console.log("Found user: " + user.username);
|
||||
|
||||
while (true) {
|
||||
let password = await question("New Password: ");
|
||||
let confirmPassword = await question("Confirm New Password: ");
|
||||
|
||||
if (password === confirmPassword) {
|
||||
await User.resetPassword(user.id, password);
|
||||
|
||||
// Reset all sessions by reset jwt secret
|
||||
await server.initJWTSecret();
|
||||
|
||||
break;
|
||||
} else {
|
||||
console.log("Passwords do not match, please try again.");
|
||||
}
|
||||
}
|
||||
console.log("Password reset successfully.");
|
||||
}
|
||||
} catch (e) {
|
||||
if (e instanceof Error) {
|
||||
console.error("Error: " + e.message);
|
||||
}
|
||||
}
|
||||
|
||||
await Database.close();
|
||||
rl.close();
|
||||
|
||||
console.log("Finished.");
|
||||
};
|
||||
|
||||
/**
|
||||
* Ask question of user
|
||||
* @param question Question to ask
|
||||
* @returns Users response
|
||||
*/
|
||||
function question(question : string) : Promise<string> {
|
||||
return new Promise((resolve) => {
|
||||
rl.question(question, (answer) => {
|
||||
resolve(answer);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
if (!process.env.TEST_BACKEND) {
|
||||
main();
|
||||
}
|
|
@ -20,7 +20,8 @@
|
|||
"build:healthcheck": "docker buildx build -f docker/BuildHealthCheck.Dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/dockge:build-healthcheck . --push",
|
||||
"start-docker": "docker run --rm -p 5001:5001 --name dockge louislam/dockge:latest",
|
||||
"mark-as-nightly": "tsx ./extra/mark-as-nightly.ts",
|
||||
"reformat-changelog": "tsx ./extra/reformat-changelog.ts"
|
||||
"reformat-changelog": "tsx ./extra/reformat-changelog.ts",
|
||||
"reset-password": "tsx ./extra/reset-password.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"@homebridge/node-pty-prebuilt-multiarch": "~0.11.11",
|
||||
|
|
Loading…
Reference in a new issue