Compare commits
No commits in common. "80ed58c85649a91a3d693f15ea801056e71d7ba9" and "23036ca0aa1d8854a50265f7e341daeb281711e2" have entirely different histories.
80ed58c856
...
23036ca0aa
4 changed files with 43 additions and 10 deletions
|
@ -87,12 +87,13 @@ app.post("/account/create", [
|
||||||
username,
|
username,
|
||||||
email,
|
email,
|
||||||
password: hashedPassword,
|
password: hashedPassword,
|
||||||
role: startingRole
|
role: startingRole,
|
||||||
|
color: User.generateColorFromUsername(username)
|
||||||
});
|
});
|
||||||
|
|
||||||
const userObject = await user.getPublicObject();
|
const userObject = await user.getPublicObject();
|
||||||
|
|
||||||
if (config.logAccountCreation) console.log("users: user created", userObject);
|
console.log("[*] [logger] [users] [create] User created", userObject);
|
||||||
|
|
||||||
res.status(200).json({
|
res.status(200).json({
|
||||||
error: false,
|
error: false,
|
||||||
|
@ -151,7 +152,7 @@ app.post("/token/create", [
|
||||||
|
|
||||||
const userObject = await existingUser.getPublicObject();
|
const userObject = await existingUser.getPublicObject();
|
||||||
|
|
||||||
if (config.logAccountCreation) console.log("users: token created", userObject);
|
console.log("[*] [logger] [users] [token create] Token created", userObject);
|
||||||
|
|
||||||
res.status(200).json({
|
res.status(200).json({
|
||||||
error: false,
|
error: false,
|
||||||
|
|
|
@ -18,9 +18,9 @@ module.exports = {
|
||||||
allowAccountCreation: true,
|
allowAccountCreation: true,
|
||||||
allowLogin: true,
|
allowLogin: true,
|
||||||
allowGatewayConnection: true,
|
allowGatewayConnection: true,
|
||||||
// The policy below will make all messages sent over the gateway to be saved in plain text in the database.
|
// The policy below will make all messages sent over the gateway to be in plain text saved to the database.
|
||||||
// This is experimental and dangerous, and, as such, should generally not be used.
|
// This is experimental and dangerous, and, as such, should generally not be used.
|
||||||
allowSavingMessages: true,
|
allowSavingMessages: false,
|
||||||
perUserMaxGatewayConnections: 4
|
perUserMaxGatewayConnections: 4
|
||||||
},
|
},
|
||||||
/*
|
/*
|
||||||
|
@ -40,8 +40,6 @@ module.exports = {
|
||||||
gatewayMaxPayloadBytes: 4096,
|
gatewayMaxPayloadBytes: 4096,
|
||||||
clientFacingPingInterval: 14750,
|
clientFacingPingInterval: 14750,
|
||||||
bcryptRounds: 10,
|
bcryptRounds: 10,
|
||||||
// displays a message containing the username, role, etc. of a new created user or token (tokens and passwords should be stripped)
|
|
||||||
logAccountCreation: false,
|
|
||||||
experiments: {
|
experiments: {
|
||||||
voiceSFUTesting: false
|
voiceSFUTesting: false
|
||||||
},
|
},
|
||||||
|
|
|
@ -7,6 +7,7 @@ const userSchema = new mongoose.Schema({
|
||||||
password: String,
|
password: String,
|
||||||
email: String,
|
email: String,
|
||||||
role: String,
|
role: String,
|
||||||
|
color: String
|
||||||
});
|
});
|
||||||
|
|
||||||
userSchema.method("getPublicObject", function() {
|
userSchema.method("getPublicObject", function() {
|
||||||
|
@ -14,6 +15,7 @@ userSchema.method("getPublicObject", function() {
|
||||||
username: this.username,
|
username: this.username,
|
||||||
permissionLevel: config.roleMap[this.role],
|
permissionLevel: config.roleMap[this.role],
|
||||||
role: this.role,
|
role: this.role,
|
||||||
|
color: this.color,
|
||||||
_id: this._id
|
_id: this._id
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
@ -25,20 +27,51 @@ userSchema.method("getFullObject", function() {
|
||||||
email: this.email,
|
email: this.email,
|
||||||
permissionLevel: config.roleMap[this.role],
|
permissionLevel: config.roleMap[this.role],
|
||||||
role: this.role,
|
role: this.role,
|
||||||
|
color: this.color,
|
||||||
_id: this._id
|
_id: this._id
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
const User = mongoose.model("User", userSchema);
|
const User = mongoose.model("User", userSchema);
|
||||||
|
|
||||||
|
// NOTE(hippoz): These are all actually material design colors, taken from https://material-ui.com/customization/color/#playground
|
||||||
|
const colors = [
|
||||||
|
"#f44336",
|
||||||
|
"#e91e63",
|
||||||
|
"#9c27b0",
|
||||||
|
"#673ab7",
|
||||||
|
"#3f51b5",
|
||||||
|
"#2196f3",
|
||||||
|
"#03a9f4",
|
||||||
|
"#00bcd4",
|
||||||
|
"#009688",
|
||||||
|
"#4caf50",
|
||||||
|
"#8bc34a",
|
||||||
|
"#cddc39",
|
||||||
|
"#ffeb3b",
|
||||||
|
"#ffc107",
|
||||||
|
"#ff9800",
|
||||||
|
"#ff5722"
|
||||||
|
];
|
||||||
|
|
||||||
|
User.generateColorFromUsername = function(username) {
|
||||||
|
let sum = 0;
|
||||||
|
for (let i in username) {
|
||||||
|
sum += username.charCodeAt(i);
|
||||||
|
}
|
||||||
|
const colorIndex = sum % colors.length;
|
||||||
|
return colors[colorIndex];
|
||||||
|
};
|
||||||
|
|
||||||
User.findByUsername = async function(username) {
|
User.findByUsername = async function(username) {
|
||||||
return await User.findOne({ username }).exec();
|
return await User.findOne({ username }).exec();
|
||||||
};
|
};
|
||||||
|
|
||||||
User.getPulicFields = function(isPartial=false) {
|
User.getPulicFields = function(isPartial=false) {
|
||||||
if (isPartial)
|
if (isPartial) {
|
||||||
return "username _id";
|
return "username _id color";
|
||||||
return "username role _id";
|
}
|
||||||
|
return "username role _id color";
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = User;
|
module.exports = User;
|
|
@ -223,6 +223,7 @@ Used mostly for messages.
|
||||||
| - | - |
|
| - | - |
|
||||||
| _id | The id of the user |
|
| _id | The id of the user |
|
||||||
| name | The name of the user |
|
| name | The name of the user |
|
||||||
|
| color | A hex color that represents that user |
|
||||||
|
|
||||||
## Message author object
|
## Message author object
|
||||||
|
|
||||||
|
|
Reference in a new issue