Merge branch 'production'
This commit is contained in:
commit
eaef11f484
|
@ -309,7 +309,7 @@
|
||||||
"desc": "Mirror of PixelCanvas"
|
"desc": "Mirror of PixelCanvas"
|
||||||
},
|
},
|
||||||
"7": {
|
"7": {
|
||||||
"indent": "x",
|
"ident": "w",
|
||||||
"title": "1bit",
|
"title": "1bit",
|
||||||
"colors": [
|
"colors": [
|
||||||
[ 0, 0, 0 ],
|
[ 0, 0, 0 ],
|
||||||
|
@ -323,7 +323,7 @@
|
||||||
"cds": 80000,
|
"cds": 80000,
|
||||||
"ranked": false,
|
"ranked": false,
|
||||||
"req": 10000,
|
"req": 10000,
|
||||||
"sd": "2020-07-05",
|
"sd": "2020-11-09",
|
||||||
"desc": "Black and White canvas"
|
"desc": "Black and White canvas"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,11 +15,26 @@ import { OAuth2Strategy as GoogleStrategy } from 'passport-google-oauth';
|
||||||
import logger from './logger';
|
import logger from './logger';
|
||||||
import { sanitizeName } from '../utils/validation';
|
import { sanitizeName } from '../utils/validation';
|
||||||
|
|
||||||
import { User, RegUser, Channel } from '../data/models';
|
import {
|
||||||
|
User, RegUser, Channel, UserBlock,
|
||||||
|
} from '../data/models';
|
||||||
import { auth } from './config';
|
import { auth } from './config';
|
||||||
import { compareToHash } from '../utils/hash';
|
import { compareToHash } from '../utils/hash';
|
||||||
import { getIPFromRequest } from '../utils/ip';
|
import { getIPFromRequest } from '../utils/ip';
|
||||||
|
|
||||||
|
const include = [{
|
||||||
|
model: Channel,
|
||||||
|
as: 'channel',
|
||||||
|
}, {
|
||||||
|
model: RegUser,
|
||||||
|
through: UserBlock,
|
||||||
|
as: 'blocked',
|
||||||
|
foreignKey: 'uid',
|
||||||
|
attributes: [
|
||||||
|
'id',
|
||||||
|
'name',
|
||||||
|
],
|
||||||
|
}];
|
||||||
|
|
||||||
passport.serializeUser((user, done) => {
|
passport.serializeUser((user, done) => {
|
||||||
done(null, user.id);
|
done(null, user.id);
|
||||||
|
@ -29,10 +44,7 @@ passport.deserializeUser(async (req, id, done) => {
|
||||||
const user = new User(id, getIPFromRequest(req));
|
const user = new User(id, getIPFromRequest(req));
|
||||||
if (id) {
|
if (id) {
|
||||||
RegUser.findByPk(id, {
|
RegUser.findByPk(id, {
|
||||||
include: {
|
include,
|
||||||
model: Channel,
|
|
||||||
as: 'channel',
|
|
||||||
},
|
|
||||||
}).then((reguser) => {
|
}).then((reguser) => {
|
||||||
if (reguser) {
|
if (reguser) {
|
||||||
user.setRegUser(reguser);
|
user.setRegUser(reguser);
|
||||||
|
@ -64,10 +76,7 @@ passport.use(new JsonStrategy({
|
||||||
? { email: nameoremail }
|
? { email: nameoremail }
|
||||||
: { name: nameoremail };
|
: { name: nameoremail };
|
||||||
RegUser.findOne({
|
RegUser.findOne({
|
||||||
include: {
|
include,
|
||||||
model: Channel,
|
|
||||||
as: 'channel',
|
|
||||||
},
|
|
||||||
where: query,
|
where: query,
|
||||||
}).then((reguser) => {
|
}).then((reguser) => {
|
||||||
if (!reguser) {
|
if (!reguser) {
|
||||||
|
@ -96,18 +105,12 @@ async function oauthLogin(email, name, discordid = null) {
|
||||||
}
|
}
|
||||||
name = sanitizeName(name);
|
name = sanitizeName(name);
|
||||||
let reguser = await RegUser.findOne({
|
let reguser = await RegUser.findOne({
|
||||||
include: {
|
include,
|
||||||
model: Channel,
|
|
||||||
as: 'channel',
|
|
||||||
},
|
|
||||||
where: { email },
|
where: { email },
|
||||||
});
|
});
|
||||||
if (!reguser) {
|
if (!reguser) {
|
||||||
reguser = await RegUser.findOne({
|
reguser = await RegUser.findOne({
|
||||||
include: {
|
include,
|
||||||
model: Channel,
|
|
||||||
as: 'channel',
|
|
||||||
},
|
|
||||||
where: { name },
|
where: { name },
|
||||||
});
|
});
|
||||||
while (reguser) {
|
while (reguser) {
|
||||||
|
@ -116,10 +119,7 @@ async function oauthLogin(email, name, discordid = null) {
|
||||||
name = `${name.substring(0, 15)}-${Math.random().toString(36).substring(2, 10)}`;
|
name = `${name.substring(0, 15)}-${Math.random().toString(36).substring(2, 10)}`;
|
||||||
// eslint-disable-next-line no-await-in-loop
|
// eslint-disable-next-line no-await-in-loop
|
||||||
reguser = await RegUser.findOne({
|
reguser = await RegUser.findOne({
|
||||||
include: {
|
include,
|
||||||
model: Channel,
|
|
||||||
as: 'channel',
|
|
||||||
},
|
|
||||||
where: { name },
|
where: { name },
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -214,18 +214,12 @@ passport.use(new RedditStrategy({
|
||||||
// reddit needs an own login strategy based on its id,
|
// reddit needs an own login strategy based on its id,
|
||||||
// because we can not access it's mail
|
// because we can not access it's mail
|
||||||
let reguser = await RegUser.findOne({
|
let reguser = await RegUser.findOne({
|
||||||
include: {
|
include,
|
||||||
model: Channel,
|
|
||||||
as: 'channel',
|
|
||||||
},
|
|
||||||
where: { redditid },
|
where: { redditid },
|
||||||
});
|
});
|
||||||
if (!reguser) {
|
if (!reguser) {
|
||||||
reguser = await RegUser.findOne({
|
reguser = await RegUser.findOne({
|
||||||
include: {
|
include,
|
||||||
model: Channel,
|
|
||||||
as: 'channel',
|
|
||||||
},
|
|
||||||
where: { name },
|
where: { name },
|
||||||
});
|
});
|
||||||
while (reguser) {
|
while (reguser) {
|
||||||
|
@ -234,10 +228,7 @@ passport.use(new RedditStrategy({
|
||||||
name = `${name.substring(0, 15)}-${Math.random().toString(36).substring(2, 10)}`;
|
name = `${name.substring(0, 15)}-${Math.random().toString(36).substring(2, 10)}`;
|
||||||
// eslint-disable-next-line no-await-in-loop
|
// eslint-disable-next-line no-await-in-loop
|
||||||
reguser = await RegUser.findOne({
|
reguser = await RegUser.findOne({
|
||||||
include: {
|
include,
|
||||||
model: Channel,
|
|
||||||
as: 'channel',
|
|
||||||
},
|
|
||||||
where: { name },
|
where: { name },
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
17
src/data/models/UserBlock.js
Normal file
17
src/data/models/UserBlock.js
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* Junction table for User -> Blocked User
|
||||||
|
* Relations defined in ./index.js
|
||||||
|
*
|
||||||
|
* @flow
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import Model from '../sequelize';
|
||||||
|
|
||||||
|
const UserBlock = Model.define('UserBlock', {
|
||||||
|
}, {
|
||||||
|
timestamps: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default UserBlock;
|
|
@ -8,7 +8,11 @@ import RegUser from './RegUser';
|
||||||
import Channel from './Channel';
|
import Channel from './Channel';
|
||||||
import UserChannel from './UserChannel';
|
import UserChannel from './UserChannel';
|
||||||
import Message from './Message';
|
import Message from './Message';
|
||||||
|
import UserBlock from './UserBlock';
|
||||||
|
|
||||||
|
/*
|
||||||
|
* User Channel access
|
||||||
|
*/
|
||||||
RegUser.belongsToMany(Channel, {
|
RegUser.belongsToMany(Channel, {
|
||||||
as: 'channel',
|
as: 'channel',
|
||||||
through: UserChannel,
|
through: UserChannel,
|
||||||
|
@ -18,11 +22,32 @@ Channel.belongsToMany(RegUser, {
|
||||||
through: UserChannel,
|
through: UserChannel,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/*
|
||||||
|
* User blocks of other user
|
||||||
|
*/
|
||||||
|
RegUser.belongsToMany(RegUser, {
|
||||||
|
as: 'blocked',
|
||||||
|
through: UserBlock,
|
||||||
|
foreignKey: 'uid',
|
||||||
|
});
|
||||||
|
RegUser.belongsToMany(RegUser, {
|
||||||
|
as: 'blockedBy',
|
||||||
|
through: UserBlock,
|
||||||
|
foreignKey: 'buid',
|
||||||
|
});
|
||||||
|
|
||||||
function sync(...args) {
|
function sync(...args) {
|
||||||
return sequelize.sync(...args);
|
return sequelize.sync(...args);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default { sync };
|
export default { sync };
|
||||||
export {
|
export {
|
||||||
Whitelist, Blacklist, User, RegUser, Channel, UserChannel, Message,
|
Whitelist,
|
||||||
|
Blacklist,
|
||||||
|
User,
|
||||||
|
RegUser,
|
||||||
|
Channel,
|
||||||
|
UserChannel,
|
||||||
|
Message,
|
||||||
|
UserBlock,
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user