Initial commit
This commit is contained in:
52
commands/check_user.js
Normal file
52
commands/check_user.js
Normal file
@@ -0,0 +1,52 @@
|
||||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||||
};
|
||||
var __metadata = (this && this.__metadata) || function (k, v) {
|
||||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
||||
};
|
||||
import { BaseCommand, args } from '@adonisjs/core/ace';
|
||||
export default class CheckUser extends BaseCommand {
|
||||
static commandName = 'check:password';
|
||||
static description = 'Verify password for admin@portfolio.local';
|
||||
static options = {
|
||||
startApp: true,
|
||||
};
|
||||
async run() {
|
||||
const { default: User } = await import('#models/user');
|
||||
const { default: hash } = await import('@adonisjs/core/services/hash');
|
||||
const email = 'admin@portfolio.local';
|
||||
let password = this.password;
|
||||
if (!password) {
|
||||
password = await this.prompt.secure('Enter password for ' + email);
|
||||
}
|
||||
this.logger.info(`Verifying credentials for ${email}...`);
|
||||
try {
|
||||
const user = await User.findBy('email', email);
|
||||
if (!user) {
|
||||
this.logger.error('User not found!');
|
||||
return;
|
||||
}
|
||||
this.logger.info(`User ID: ${user.id}`);
|
||||
this.logger.info(`Stored Hash: ${user.password.substring(0, 20)}...`);
|
||||
const isValid = await hash.verify(user.password, password);
|
||||
this.logger.info(`Hash Check (scrypt): ${isValid}`);
|
||||
if (isValid) {
|
||||
this.logger.success('Password is CORRECT!');
|
||||
}
|
||||
else {
|
||||
this.logger.error('Password is INCORRECT!');
|
||||
}
|
||||
}
|
||||
catch (error) {
|
||||
this.logger.error(error);
|
||||
}
|
||||
}
|
||||
}
|
||||
__decorate([
|
||||
args.string({ description: 'Password to verify', required: false }),
|
||||
__metadata("design:type", String)
|
||||
], CheckUser.prototype, "password", void 0);
|
||||
//# sourceMappingURL=check_user.js.map
|
||||
1
commands/check_user.js.map
Normal file
1
commands/check_user.js.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"check_user.js","sourceRoot":"","sources":["../../commands/check_user.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAGtD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IAChD,MAAM,CAAC,WAAW,GAAG,gBAAgB,CAAA;IACrC,MAAM,CAAC,WAAW,GAAG,2CAA2C,CAAA;IAEhE,MAAM,CAAC,OAAO,GAAmB;QAC/B,QAAQ,EAAE,IAAI;KACf,CAAA;IAKD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;QACtD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAA;QAEtE,MAAM,KAAK,GAAG,uBAAuB,CAAA;QACrC,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;QAE5B,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,GAAG,KAAK,CAAC,CAAA;QACpE,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,KAAK,KAAK,CAAC,CAAA;QAEzD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;YAC9C,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;gBACpC,OAAM;YACR,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;YACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAA;YAErE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;YAC1D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAA;YAEnD,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAA;YAC7C,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAA;YAC7C,CAAC;QAEH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC1B,CAAC;IACH,CAAC;;AArCO;IADP,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,oBAAoB,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;2CAC5C"}
|
||||
49
commands/debug_hash.js
Normal file
49
commands/debug_hash.js
Normal file
@@ -0,0 +1,49 @@
|
||||
import { BaseCommand } from '@adonisjs/core/ace';
|
||||
export default class DebugHash extends BaseCommand {
|
||||
static commandName = 'debug:hash';
|
||||
static description = 'Debug hashing and DB storage';
|
||||
static options = {
|
||||
startApp: true,
|
||||
};
|
||||
async run() {
|
||||
const { default: hash } = await import('@adonisjs/core/services/hash');
|
||||
const { default: User } = await import('#models/user');
|
||||
const { default: db } = await import('@adonisjs/lucid/services/db');
|
||||
console.log('--- Starting Hash Debug ---');
|
||||
const password = 'admin123';
|
||||
const hashed = await hash.make(password);
|
||||
console.log(`Original Password: ${password}`);
|
||||
console.log(`Generated Hash (len=${hashed.length}): ${hashed}`);
|
||||
const verifyImmediate = await hash.verify(hashed, password);
|
||||
console.log(`Immediate Verify: ${verifyImmediate}`);
|
||||
const email = 'admin@portfolio.local';
|
||||
const user = await User.findBy('email', email);
|
||||
if (user) {
|
||||
console.log(`\nUpdating user ${user.id} with new hash via RAW DB...`);
|
||||
await db.from('users').where('id', user.id).update({ password: hashed });
|
||||
const userReloaded = await User.find(user.id);
|
||||
if (!userReloaded)
|
||||
return;
|
||||
console.log(`Reloaded Model Hash (len=${userReloaded.password.length}): ${userReloaded.password}`);
|
||||
if (userReloaded.password !== hashed) {
|
||||
console.error('MISMATCH! storage altered the hash.');
|
||||
console.error(`Expected: ${hashed}`);
|
||||
console.error(`Actual: ${userReloaded.password}`);
|
||||
}
|
||||
else {
|
||||
console.log('MATCH! Storage preserved the hash.');
|
||||
}
|
||||
const verifyModel = await hash.verify(userReloaded.password, password);
|
||||
console.log(`Model Verify: ${verifyModel}`);
|
||||
const rawUser = await db.from('users').where('id', user.id).first();
|
||||
console.log(`Raw DB Hash (len=${rawUser.password.length}): ${rawUser.password}`);
|
||||
if (rawUser.password !== hashed) {
|
||||
console.error('MISMATCH in Raw DB!');
|
||||
}
|
||||
}
|
||||
else {
|
||||
console.error('User not found!');
|
||||
}
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=debug_hash.js.map
|
||||
1
commands/debug_hash.js.map
Normal file
1
commands/debug_hash.js.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"debug_hash.js","sourceRoot":"","sources":["../../commands/debug_hash.ts"],"names":[],"mappings":"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"}
|
||||
51
commands/fix_dates.js
Normal file
51
commands/fix_dates.js
Normal file
@@ -0,0 +1,51 @@
|
||||
import { BaseCommand } from '@adonisjs/core/ace';
|
||||
export default class FixDates extends BaseCommand {
|
||||
static commandName = 'fix:dates';
|
||||
static description = 'Fix invalid ISO dates in SQLite database';
|
||||
static options = {
|
||||
startApp: true,
|
||||
};
|
||||
async run() {
|
||||
const { default: db } = await import('@adonisjs/lucid/services/db');
|
||||
const { DateTime } = await import('luxon');
|
||||
const tables = [
|
||||
'projects', 'categories', 'tags', 'trainings',
|
||||
'experiences', 'music', 'information', 'images', 'users'
|
||||
];
|
||||
this.logger.info('Starting to fix dates in the database...');
|
||||
let totalFixed = 0;
|
||||
for (const table of tables) {
|
||||
try {
|
||||
const rows = await db.from(table).select('*');
|
||||
let tableFixed = 0;
|
||||
for (const row of rows) {
|
||||
const updates = {};
|
||||
for (const [key, value] of Object.entries(row)) {
|
||||
if (typeof value === 'string' && value.includes('T')) {
|
||||
const parsed = DateTime.fromISO(value);
|
||||
if (parsed.isValid) {
|
||||
updates[key] = parsed.toFormat('yyyy-MM-dd HH:mm:ss');
|
||||
}
|
||||
}
|
||||
}
|
||||
if (Object.keys(updates).length > 0) {
|
||||
await db.from(table).where('id', row.id).update(updates);
|
||||
tableFixed++;
|
||||
totalFixed++;
|
||||
}
|
||||
}
|
||||
if (tableFixed > 0) {
|
||||
this.logger.success(`Fixed ${tableFixed} rows in table "${table}"`);
|
||||
}
|
||||
else {
|
||||
this.logger.info(`No invalid dates found in table "${table}"`);
|
||||
}
|
||||
}
|
||||
catch (error) {
|
||||
this.logger.warning(`Failed to process table "${table}": ${error.message}`);
|
||||
}
|
||||
}
|
||||
this.logger.success(`Date fixing complete! Total rows fixed: ${totalFixed}`);
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=fix_dates.js.map
|
||||
1
commands/fix_dates.js.map
Normal file
1
commands/fix_dates.js.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"fix_dates.js","sourceRoot":"","sources":["../../commands/fix_dates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGhD,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,WAAW;IAC7C,MAAM,CAAC,WAAW,GAAG,WAAW,CAAA;IAChC,MAAM,CAAC,WAAW,GAAG,0CAA0C,CAAA;IAE/D,MAAM,CAAC,OAAO,GAAmB;QAC7B,QAAQ,EAAE,IAAI;KACjB,CAAA;IAED,KAAK,CAAC,GAAG;QACL,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAA;QACnE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAA;QAE1C,MAAM,MAAM,GAAG;YACX,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW;YAC7C,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO;SAC3D,CAAA;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAA;QAE5D,IAAI,UAAU,GAAG,CAAC,CAAA;QAElB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC;gBACD,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBAC7C,IAAI,UAAU,GAAG,CAAC,CAAA;gBAElB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;oBACrB,MAAM,OAAO,GAAQ,EAAE,CAAA;oBACvB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;4BACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;4BACtC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gCACjB,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAA;4BACzD,CAAC;wBACL,CAAC;oBACL,CAAC;oBAED,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAClC,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;wBACxD,UAAU,EAAE,CAAA;wBACZ,UAAU,EAAE,CAAA;oBAChB,CAAC;gBACL,CAAC;gBAED,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;oBACjB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,UAAU,mBAAmB,KAAK,GAAG,CAAC,CAAA;gBACvE,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,KAAK,GAAG,CAAC,CAAA;gBAClE,CAAC;YACL,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,4BAA4B,KAAK,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;YAC/E,CAAC;QACL,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,2CAA2C,UAAU,EAAE,CAAC,CAAA;IAChF,CAAC"}
|
||||
34
commands/reset_password.js
Normal file
34
commands/reset_password.js
Normal file
@@ -0,0 +1,34 @@
|
||||
import { BaseCommand } from '@adonisjs/core/ace';
|
||||
export default class ResetPassword extends BaseCommand {
|
||||
static commandName = 'reset:password';
|
||||
static description = 'Reset admin password';
|
||||
static options = {
|
||||
startApp: true,
|
||||
};
|
||||
async run() {
|
||||
const { default: User } = await import('#models/user');
|
||||
const { default: hash } = await import('@adonisjs/core/services/hash');
|
||||
const email = 'admin@portfolio.local';
|
||||
this.logger.info(`Resetting password for ${email}...`);
|
||||
try {
|
||||
const user = await User.findBy('email', email);
|
||||
if (!user) {
|
||||
this.logger.error('User not found in database!');
|
||||
return;
|
||||
}
|
||||
this.logger.info(`User found: ${user.id}`);
|
||||
const newPassword = await this.prompt.secure('Enter new password (default: admin123)') || 'admin123';
|
||||
const { default: db } = await import('@adonisjs/lucid/services/db');
|
||||
await db.from('users').where('id', user.id).update({
|
||||
password: await hash.make(newPassword),
|
||||
updated_at: new Date().toISOString()
|
||||
});
|
||||
this.logger.success(`Password for ${email} has been reset to: ${newPassword}`);
|
||||
this.logger.info('Please try logging in now.');
|
||||
}
|
||||
catch (error) {
|
||||
this.logger.error(error);
|
||||
}
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=reset_password.js.map
|
||||
1
commands/reset_password.js.map
Normal file
1
commands/reset_password.js.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"reset_password.js","sourceRoot":"","sources":["../../commands/reset_password.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGhD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IACpD,MAAM,CAAC,WAAW,GAAG,gBAAgB,CAAA;IACrC,MAAM,CAAC,WAAW,GAAG,sBAAsB,CAAA;IAE3C,MAAM,CAAC,OAAO,GAAmB;QAC/B,QAAQ,EAAE,IAAI;KACf,CAAA;IAED,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;QACtD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAA;QAEtE,MAAM,KAAK,GAAG,uBAAuB,CAAA;QACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,KAAK,KAAK,CAAC,CAAA;QAEtD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;YAE9C,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAA;gBAChD,OAAM;YACR,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;YAE1C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,wCAAwC,CAAC,IAAI,UAAU,CAAA;YAEpG,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAA;YAEnE,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;gBACjD,QAAQ,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;gBACtC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACrC,CAAC,CAAA;YAIF,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,KAAK,uBAAuB,WAAW,EAAE,CAAC,CAAA;YAC9E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;QAEhD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC1B,CAAC;IACH,CAAC"}
|
||||
Reference in New Issue
Block a user