fix: Able to change postgres user password from ui

This commit is contained in:
Andras Bacsai 2022-04-09 13:33:23 +02:00
parent f4315144af
commit d2f5a58f3b
3 changed files with 15 additions and 9 deletions

View File

@ -138,7 +138,7 @@ export async function stopDatabase(database) {
return everStarted;
}
export async function updatePasswordInDb(database, user, newPassword) {
export async function updatePasswordInDb(database, user, newPassword, isRoot) {
const {
id,
type,
@ -157,9 +157,15 @@ export async function updatePasswordInDb(database, user, newPassword) {
`DOCKER_HOST=${host} docker exec ${id} mysql -u ${rootUser} -p${rootUserPassword} -e \"ALTER USER '${user}'@'%' IDENTIFIED WITH caching_sha2_password BY '${newPassword}';\"`
);
} else if (type === 'postgresql') {
await asyncExecShell(
`DOCKER_HOST=${host} docker exec ${id} psql postgresql://${dbUser}:${dbUserPassword}@${id}:5432/${defaultDatabase} -c "ALTER role ${user} WITH PASSWORD '${newPassword}'"`
);
if (isRoot) {
await asyncExecShell(
`DOCKER_HOST=${host} docker exec ${id} psql postgresql://postgres:${rootUserPassword}@${id}:5432/${defaultDatabase} -c "ALTER role postgres WITH PASSWORD '${newPassword}'"`
);
} else {
await asyncExecShell(
`DOCKER_HOST=${host} docker exec ${id} psql postgresql://${dbUser}:${dbUserPassword}@${id}:5432/${defaultDatabase} -c "ALTER role ${user} WITH PASSWORD '${newPassword}'"`
);
}
} else if (type === 'mongodb') {
await asyncExecShell(
`DOCKER_HOST=${host} docker exec ${id} mongo 'mongodb://${rootUser}:${rootUserPassword}@${id}:27017/admin?readPreference=primary&ssl=false' --eval "db.changeUserPassword('${user}','${newPassword}')"`

View File

@ -26,12 +26,12 @@
>Root (postgres) User Password</label
>
<CopyPasswordField
readonly
disabled
disabled={!isRunning}
readonly={!isRunning}
placeholder="Generated automatically after start"
id="rootUserPassword"
name="rootUserPassword"
value={database.rootUserPassword}
bind:value={database.rootUserPassword}
/>
</div>
<div class="grid grid-cols-2 items-center">

View File

@ -68,9 +68,9 @@ export const post: RequestHandler = async (event) => {
const database = await db.getDatabase({ id, teamId });
if (isRunning) {
if (database.dbUserPassword !== dbUserPassword) {
await updatePasswordInDb(database, dbUser, dbUserPassword);
await updatePasswordInDb(database, dbUser, dbUserPassword, false);
} else if (database.rootUserPassword !== rootUserPassword) {
await updatePasswordInDb(database, rootUser, rootUserPassword);
await updatePasswordInDb(database, rootUser, rootUserPassword, true);
}
}
await db.updateDatabase({