Features: - Full RBAC with 3 roles (superadmin/manager/contributor) - Ownership tracking on posts, tasks, campaigns, projects - Task system: assign to anyone, filter combobox, visibility scoping - Team members merged into users table (single source of truth) - Post thumbnails on kanban cards from attachments - Publication link validation before publishing - Interactive onboarding tutorial with Settings restart - Full Arabic/English i18n with RTL layout support - Language toggle in sidebar, IBM Plex Sans Arabic font - Brand-based visibility filtering for non-superadmins - Manager can only create contributors - Profile completion flow for new users - Cookie-based sessions (express-session + SQLite)
29 lines
919 B
JavaScript
29 lines
919 B
JavaScript
const bcrypt = require('../bcrypt');
|
|
|
|
(async () => {
|
|
const start = Date.now();
|
|
|
|
// genSalt
|
|
const salt = await bcrypt.genSalt(10)
|
|
console.log('salt: ' + salt);
|
|
console.log('salt cb end: ' + (Date.now() - start) + 'ms');
|
|
|
|
// hash
|
|
const crypted = await bcrypt.hash('test', salt)
|
|
console.log('crypted: ' + crypted);
|
|
console.log('crypted cb end: ' + (Date.now() - start) + 'ms');
|
|
console.log('rounds used from hash:', bcrypt.getRounds(crypted));
|
|
|
|
// compare
|
|
const res = await bcrypt.compare('test', crypted)
|
|
console.log('compared true: ' + res);
|
|
console.log('compared true cb end: ' + (Date.now() - start) + 'ms');
|
|
|
|
// compare
|
|
const res2 = await bcrypt.compare('bacon', crypted)
|
|
console.log('compared false: ' + res2);
|
|
console.log('compared false cb end: ' + (Date.now() - start) + 'ms');
|
|
|
|
console.log('end: ' + (Date.now() - start) + 'ms');
|
|
})();
|