users.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. var User = require("./user");
  2. var DataSavable = require("./SavableData");
  3. var E = require("./Errors");
  4. var utils = require('./utils');
  5. var global = require("./global");
  6. var fs = require("fs");
  7. module.exports = class UserManager extends DataSavable{
  8. constructor()
  9. {
  10. super();
  11. utils.mkdir(global.userPath);
  12. this.index=0;
  13. this.users={}; // id: name
  14. this.path = "data/users.json";
  15. this.load();
  16. }
  17. createUser(name, password)
  18. {
  19. console.log("createUser('"+name+"', '"+password+"')")
  20. if(this.findIdByName(name)>=0) return -1;
  21. var u = new User( name, password);
  22. this.users[this.index]=name;
  23. this.index++;
  24. utils.mkdir(global.pathToUserDir(name));
  25. u.save();
  26. this.save();
  27. return u;
  28. }
  29. removeUser(name)
  30. {
  31. var user = this.getUser(name);
  32. if(!E.check(user))
  33. return user;
  34. var id = this.findIdByName(name);
  35. delete this.users[id];
  36. console.log("-- "+global.pathToUserDir(name)+" --")
  37. utils.rmdir(global.pathToUserDir(name));
  38. this.save();
  39. return E.SUCCESS;
  40. }
  41. renameUser(oldName, newName)
  42. {
  43. var oldPath = global.pathToUserDir(oldName);
  44. var newPath = global.pathToUserDir(newName);
  45. console.log(oldPath+" -> "+newPath);
  46. try {
  47. utils.mv(oldPath, newPath);
  48. } catch (e) {
  49. return E.UNKNWON;
  50. } finally {
  51. }
  52. var id = this.findIdByName(oldName);
  53. this.users[id]=newName;
  54. this.save();
  55. var user = this.getUser(newName);
  56. if(!E.check(user))
  57. return user;
  58. user.name=newName;
  59. user.save();
  60. return E.SUCCESS;
  61. }
  62. editUser(name, data)
  63. {
  64. console.log("\n\n'"+data.name+"' "+"'"+name+"'")
  65. if(data.name!=undefined && data.name!=name)
  66. {
  67. var t = this.renameUser(name, data.name);
  68. if( !E.check(t) )
  69. return t;
  70. this.save();
  71. name=data.name;
  72. }
  73. var user = this.getUser(name);
  74. if(!E.check(user))
  75. return user;
  76. console.log("\n\ndata: "+JSON.stringify(data));
  77. console.log("avant: "+JSON.stringify(user));
  78. Object.assign(user, data);
  79. console.log("apres: "+JSON.stringify(user));
  80. user.save();
  81. return E.SUCCESS;
  82. }
  83. findIdByName(name)
  84. {
  85. var keys = Object.keys(this.users);
  86. for(var i=0; i<keys.length; i++)
  87. if(this.users[keys[i]]==name)
  88. return keys[i];
  89. return -1;
  90. }
  91. getUser(name)
  92. {
  93. var id = this.findIdByName(name);
  94. if(id<0) return E.BAD_USER;
  95. var user = new User();
  96. return user.load(name);
  97. }
  98. getUserList()
  99. {
  100. return Object.values(this.users);
  101. }
  102. }