Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用个人消息创建多用户登录系统_Javascript_Theory_User Management - Fatal编程技术网

Javascript 使用个人消息创建多用户登录系统

Javascript 使用个人消息创建多用户登录系统,javascript,theory,user-management,Javascript,Theory,User Management,我想创建一个带有私人消息的多用户登录系统。 我用JavaScript创建了这个理论(只是为了勾勒出理论和功能),我想知道我是否走上了正确的道路。 当然,我将在稍后的所有验证中将其更改为后端语言,这纯粹是用于绘制草图 // User database simulation var users = []; var defaultUser = { 'rights': 1, /* 0 - 3: 0 is banned, 1 is default, 2 is moderator, 3 is ad

我想创建一个带有私人消息的多用户登录系统。 我用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);
//用户数据库模拟
var用户=[];
var defaultUser={
“权限”:1、/*0-3:0被禁止,1为默认值,2为版主,3为管理员*/
“已激活”:false,
“createdAt”:null,
“updatedAt”:null,
“用户名”:null,
“userId”:null,
“电子邮件”:空,
“通过”:null,/*将被加密*/
“个人资料”:{
“性别”:空,
“年龄”:空,
“阿凡达”:空,
“updatedAt”:null,
},
“消息”:{
“收件箱”:[],
“发件箱”:[],
“垃圾”:[],
“草稿”:[]
}
};
var defaultMessage={
“id”:null,
“日期”:null,
“发件人”:null,
“to”:null,
“消息”:null
};
var userManagement={
“注册”:功能(用户名、电子邮件、通行证){
var user=$.extend({},defaultUser);
user.username=用户名;
user.email=电子邮件;
user.pass=通过;
user.userId=username+'.'+Math.floor(Date.now()/1000);
//如果所有内容都有效,请注册:
//用户数据库插入模拟
push(用户);
console.log('registed',user);
},
“登录”:函数(用户名、密码){
//用户数据库查询模拟
for(var i=0,l=users.length;i
JS小提琴:


他们知道我如何设置每个用户的私有消息,这是一件好事吗?我也会很感激其他方面的建议

这是一个开始,如果您的主要目的是促进私人消息,那么是的,每个用户的私人消息是一件好事

我的第一个想法是,你知道你在重新发明轮子,对吗?如果将此作为业务需求,我将与现有的消息传递服务或协议集成,而不必处理此类数据的长期管理。即使是身份验证,在今天,您也应该尝试实现某种开放身份验证标准,如OAuth,以再次减少您为使其启动并长期运行所需的工作量

我通常不会将邮件数据物理地放入发件人的发件箱,然后再放入收件人的收件箱,这主要是因为您的数据存储量会增加一倍,但我想,与电子邮件一样,发送原始邮件的副本会使邮件的管理变得非常简单,同时使一个用户很难意外地访问另一个用户的消息


在这里,因为您正在进行原型设计,所以很难提供像样的评论,因为您已经暗示了这样一个事实,即您将在后端以不同的方式进行操作,所以我不想再猜测您已经决定在哪里进行此操作。对于这样一个简单的系统,UI应该是真正的lite,逻辑在后端,具体的逻辑是我想提供未来评论和见解的地方。

你的用例是什么?你的意思是什么?谢谢你的支持