Added filterable stash pages.
This commit is contained in:
25
src/auth.js
25
src/auth.js
@@ -8,7 +8,9 @@ import { shapes } from '@dicebear/collection';
|
||||
import { knexOwner as knex } from './knex.js';
|
||||
import { curateUser, fetchUser } from './users.js';
|
||||
import { HttpError } from './errors.js';
|
||||
import initLogger from './logger.js';
|
||||
|
||||
const logger = initLogger();
|
||||
const scrypt = util.promisify(crypto.scrypt);
|
||||
|
||||
async function verifyPassword(password, storedPassword) {
|
||||
@@ -32,22 +34,21 @@ async function generateAvatar(user) {
|
||||
});
|
||||
|
||||
await fs.mkdir('media/avatars', { recursive: true });
|
||||
|
||||
await avatar.png().toFile(`media/avatars/${user.id}_${user.username}.png`);
|
||||
|
||||
logger.verbose(`Generated avatar for '${user.username}' (${user.id})`);
|
||||
}
|
||||
|
||||
export async function login(credentials) {
|
||||
export async function login(credentials, userIp) {
|
||||
if (!config.auth.login) {
|
||||
throw new HttpError('Logins are currently disabled', 405);
|
||||
}
|
||||
|
||||
const user = await fetchUser(credentials.username.trim(), {
|
||||
const { user, stashes } = await fetchUser(credentials.username.trim(), {
|
||||
email: true,
|
||||
raw: true,
|
||||
});
|
||||
|
||||
console.log('login user', user);
|
||||
|
||||
if (!user) {
|
||||
throw new HttpError('Username or password incorrect', 401);
|
||||
}
|
||||
@@ -58,15 +59,21 @@ export async function login(credentials) {
|
||||
.update('last_login', 'NOW()')
|
||||
.where('id', user.id);
|
||||
|
||||
if (!user.avatar) {
|
||||
console.log('login user', user);
|
||||
|
||||
logger.verbose(`Login from '${user.username}' (${user.id}, ${userIp})`);
|
||||
|
||||
try {
|
||||
await fs.access(`media/avatars/${user.id}_${user.username}.png`);
|
||||
} catch (error) {
|
||||
await generateAvatar(user);
|
||||
}
|
||||
|
||||
// fetched the raw user for password verification, don't return directly to user
|
||||
return curateUser(user);
|
||||
return curateUser(user, { stashes });
|
||||
}
|
||||
|
||||
export async function signup(credentials) {
|
||||
export async function signup(credentials, userIp) {
|
||||
if (!config.auth.signup) {
|
||||
throw new HttpError('Sign-ups are currently disabled', 405);
|
||||
}
|
||||
@@ -126,6 +133,8 @@ export async function signup(credentials) {
|
||||
primary: true,
|
||||
});
|
||||
|
||||
logger.verbose(`Signup from '${curatedUsername}' (${userId}, ${credentials.email}, ${userIp})`);
|
||||
|
||||
await generateAvatar({
|
||||
id: userId,
|
||||
username: curatedUsername,
|
||||
|
||||
Reference in New Issue
Block a user