使用个人消息创建多用户登录系统
Create multiple user login system with personal messages
我想创建一个带有私人消息的多用户登录系统。
我在 JavaScript 中创建了理论(只是为了勾勒出理论和功能),我想知道我是否在正确的轨道上。
当然我稍后会把它改成后端语言,所有的验证,这纯粹是为了草图。
// User database simulation
var users = [];
var defaultUser = {
'rights': 1, /* 0 - 3: 0 is banned, 1 is default, 2 is moderator, 3 is admin */
'activated': false,
'createdAt': null,
'updatedAt': null,
'username': null,
'userId': null,
'email': null,
'pass': null, /* will be encrypted */
'profile': {
'sex': null,
'age': null,
'avatar': null,
'updatedAt': null,
},
'messages': {
'inbox': [],
'outbox': [],
'trash': [],
'drafts': []
}
};
var defaultMessage = {
'id': null,
'date': null,
'from': null,
'to': null,
'message': null
};
var userManagement = {
'register': function(username, email, pass){
var user = $.extend({}, defaultUser);
user.username = username;
user.email = email;
user.pass = pass;
user.userId = username + '_' + Math.floor(Date.now() / 1000);
// If everything is valid, register:
// User database insert simulation
users.push(user);
console.log('Registered', user);
},
'login': function(username, pass) {
// User database query simulation
for(var i = 0, l = users.length; i < l; i++) {
var user = users[i];
if(user.username === username) {
if(user.pass === pass) {
console.log('Logged in', user);
} else {
console.log('Pass incorrect');
}
} else {
console.log('User not found');
}
}
},
'forgotUsername': function(email) {
// User database query simulation
for(var i = 0, l = users.length; i < l; i++) {
var user = users[i];
if(user.email === email) {
console.log('username ['+ user.username +'] send to ' + user.email);
} else {
console.log('User not found');
}
}
},
'forgotPass': function(username) {
// User database query simulation
for(var i = 0, l = users.length; i < l; i++) {
var user = users[i];
if(user.username === username) {
console.log('pass from user ['+ user.username +'] send to ' + user.email);
} else {
console.log('User not found');
}
}
},
'getUserById': function(userId){
var key;
for(var i = 0, l = users.length; i < l; i++) {
var user = users[i];
if(user.userId === userId) {
return user;
}
}
return null;
},
'getUserByUsername': function(username){
for(var i = 0, l = users.length; i < l; i++) {
var user = users[i];
if(user.username === username) {
return user;
}
}
return null;
}
/* TODO: updateProfile, activate */
}
var message = {
'send': function(fromUserId, toUserId, msg){
var sender = userManagement.getUserById(fromUserId);
var receiver = userManagement.getUserById(toUserId);
var message = $.extend({}, defaultMessage);
message.id = fromUserId + '_' + Math.floor(Date.now() / 1000);
message.from = sender.username;
message.fromUserId = fromUserId;
message.to = receiver.username
message.toUserId = toUserId;
message.message = msg;
message.date = new Date();
sender.messages.outbox.push(message);
receiver.messages.inbox.push(message);
}
/* TODO: delete, move etc. */
}
userManagement.register('barry', 'barry@test.nl', 'bcf2ibc');
userManagement.register('john', 'john@test.nl', 'bahjscb');
userManagement.login('test', 'blabla'); // fail
userManagement.login('barry', 'blabla'); // fail
userManagement.login('barry', 'bcf2ibc'); // success
userManagement.login('John', 'bahjscb'); // success
//userManagement.forgotPass('barry');
var barry = userManagement.getUserByUsername('barry');
var john = userManagement.getUserByUsername('John');
message.send(barry.userId, john.userId, 'My test message.');
message.send(barry.userId, john.userId, 'You received my previous message?');
message.send(john.userId, barry.userId, 'Yes I did received them.');
console.log(users);
JS Fiddle: https://jsfiddle.net/vmjs1n9n/12/
他们按照我为每个用户设置私人消息的方式,这样做好吗?我也将不胜感激有关其余部分的建议!
这是一个开始,如果您的主要目的是促进私人消息,那么是的,每个用户的私人消息是一件好事。
我的第一个想法,你知道你是 re-inventing 轮子吧?如果将此作为业务需求提供给我,我会与现有的消息服务或协议集成,而不必处理此类数据的长期管理。即使是身份验证,在今天,您也应该尝试实施某种开放式身份验证标准,例如 OAuth,以再次减少您需要花费的精力来实现这一目标并长期保持 运行。
我通常不会将邮件数据物理地放入发件人的发件箱,然后也放入收件人的收件箱,主要是因为您的数据存储会加倍,但我想像电子邮件一样,路由原始邮件的副本会使消息的管理非常简单,同时很难意外地让一个用户访问另一个用户的消息。
这里因为你正在制作原型,所以很难提供像样的评论,因为你已经暗示你会在后端做不同的事情,所以我不想再猜测你已经决定去哪里有了这个。这么简单的系统,UI应该很精简,逻辑在后端,具体的逻辑我想提供以后的评论和见解。
我想创建一个带有私人消息的多用户登录系统。 我在 JavaScript 中创建了理论(只是为了勾勒出理论和功能),我想知道我是否在正确的轨道上。 当然我稍后会把它改成后端语言,所有的验证,这纯粹是为了草图。
// User database simulation
var users = [];
var defaultUser = {
'rights': 1, /* 0 - 3: 0 is banned, 1 is default, 2 is moderator, 3 is admin */
'activated': false,
'createdAt': null,
'updatedAt': null,
'username': null,
'userId': null,
'email': null,
'pass': null, /* will be encrypted */
'profile': {
'sex': null,
'age': null,
'avatar': null,
'updatedAt': null,
},
'messages': {
'inbox': [],
'outbox': [],
'trash': [],
'drafts': []
}
};
var defaultMessage = {
'id': null,
'date': null,
'from': null,
'to': null,
'message': null
};
var userManagement = {
'register': function(username, email, pass){
var user = $.extend({}, defaultUser);
user.username = username;
user.email = email;
user.pass = pass;
user.userId = username + '_' + Math.floor(Date.now() / 1000);
// If everything is valid, register:
// User database insert simulation
users.push(user);
console.log('Registered', user);
},
'login': function(username, pass) {
// User database query simulation
for(var i = 0, l = users.length; i < l; i++) {
var user = users[i];
if(user.username === username) {
if(user.pass === pass) {
console.log('Logged in', user);
} else {
console.log('Pass incorrect');
}
} else {
console.log('User not found');
}
}
},
'forgotUsername': function(email) {
// User database query simulation
for(var i = 0, l = users.length; i < l; i++) {
var user = users[i];
if(user.email === email) {
console.log('username ['+ user.username +'] send to ' + user.email);
} else {
console.log('User not found');
}
}
},
'forgotPass': function(username) {
// User database query simulation
for(var i = 0, l = users.length; i < l; i++) {
var user = users[i];
if(user.username === username) {
console.log('pass from user ['+ user.username +'] send to ' + user.email);
} else {
console.log('User not found');
}
}
},
'getUserById': function(userId){
var key;
for(var i = 0, l = users.length; i < l; i++) {
var user = users[i];
if(user.userId === userId) {
return user;
}
}
return null;
},
'getUserByUsername': function(username){
for(var i = 0, l = users.length; i < l; i++) {
var user = users[i];
if(user.username === username) {
return user;
}
}
return null;
}
/* TODO: updateProfile, activate */
}
var message = {
'send': function(fromUserId, toUserId, msg){
var sender = userManagement.getUserById(fromUserId);
var receiver = userManagement.getUserById(toUserId);
var message = $.extend({}, defaultMessage);
message.id = fromUserId + '_' + Math.floor(Date.now() / 1000);
message.from = sender.username;
message.fromUserId = fromUserId;
message.to = receiver.username
message.toUserId = toUserId;
message.message = msg;
message.date = new Date();
sender.messages.outbox.push(message);
receiver.messages.inbox.push(message);
}
/* TODO: delete, move etc. */
}
userManagement.register('barry', 'barry@test.nl', 'bcf2ibc');
userManagement.register('john', 'john@test.nl', 'bahjscb');
userManagement.login('test', 'blabla'); // fail
userManagement.login('barry', 'blabla'); // fail
userManagement.login('barry', 'bcf2ibc'); // success
userManagement.login('John', 'bahjscb'); // success
//userManagement.forgotPass('barry');
var barry = userManagement.getUserByUsername('barry');
var john = userManagement.getUserByUsername('John');
message.send(barry.userId, john.userId, 'My test message.');
message.send(barry.userId, john.userId, 'You received my previous message?');
message.send(john.userId, barry.userId, 'Yes I did received them.');
console.log(users);
JS Fiddle: https://jsfiddle.net/vmjs1n9n/12/
他们按照我为每个用户设置私人消息的方式,这样做好吗?我也将不胜感激有关其余部分的建议!
这是一个开始,如果您的主要目的是促进私人消息,那么是的,每个用户的私人消息是一件好事。
我的第一个想法,你知道你是 re-inventing 轮子吧?如果将此作为业务需求提供给我,我会与现有的消息服务或协议集成,而不必处理此类数据的长期管理。即使是身份验证,在今天,您也应该尝试实施某种开放式身份验证标准,例如 OAuth,以再次减少您需要花费的精力来实现这一目标并长期保持 运行。
我通常不会将邮件数据物理地放入发件人的发件箱,然后也放入收件人的收件箱,主要是因为您的数据存储会加倍,但我想像电子邮件一样,路由原始邮件的副本会使消息的管理非常简单,同时很难意外地让一个用户访问另一个用户的消息。
这里因为你正在制作原型,所以很难提供像样的评论,因为你已经暗示你会在后端做不同的事情,所以我不想再猜测你已经决定去哪里有了这个。这么简单的系统,UI应该很精简,逻辑在后端,具体的逻辑我想提供以后的评论和见解。