You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

110 lines
3.9 KiB

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
  1. function createLdapUser(adminUid, adminPwd, newEntry) {
  2. if (adminUid === "admin" && adminPwd === "password") {
  3. return { "failed": false,
  4. "newPasswd": "NuOvA-PaSsWwOrD" };
  5. }
  6. return { "failed": true,
  7. "reason": "Invalid admin username or password." };
  8. };
  9. var lilikAddUserApp = angular.module('lilikAddUserApp', []);
  10. lilikAddUserApp.filter('excludeKey', function() {
  11. return function(input, search) {
  12. if (!input) return input;
  13. if (!search) return input;
  14. var excluded_key = ('' + search);
  15. var result = {};
  16. angular.forEach(input, function(value, key) {
  17. var actual_key = ('' + key);
  18. if (actual_key != excluded_key) {
  19. result[key] = value;
  20. }
  21. });
  22. return result;
  23. }
  24. });
  25. lilikAddUserApp.controller('AddUserController', function AddUserController($scope, $http) {
  26. // Initialize scope variable
  27. $scope.showLoginForm = true;
  28. $scope.showAddForm = false;
  29. $scope.showConfirmForm = false;
  30. $scope.startConfirm = false;
  31. $scope.creationPending = false;
  32. $scope.newExtraGroups = [];
  33. $scope.typingUser = function () {
  34. $scope.newUid = $scope.newUid.toLowerCase().replace(' ', '.');
  35. $scope.newCn = $scope.newUid.replace('.',' ').replace(/(^\w|\s\w)/g, m => m.toUpperCase());
  36. };
  37. $scope.notPrincipal = function (group) {
  38. return group.key !== $scope.newGroup;
  39. }
  40. // Try to login and download groups
  41. $scope.getGroups = function () {
  42. $scope.creationPending = true;
  43. delete $scope.loginError;
  44. $http.post('../user_backend/groups', { 'username': $scope.adminUid, 'password': $scope.adminPwd })
  45. .then(function (response) {
  46. result = response.data;
  47. if (result.failed === false) {
  48. $scope.showAddForm = true;
  49. $scope.showLoginForm = false;
  50. $scope.groups = result.groups;
  51. } else {
  52. $scope.loginError = result.reason;
  53. }
  54. });
  55. $scope.creationPending = false;
  56. };
  57. // Ask for confirmation of user details
  58. $scope.createNewUser = function () {
  59. $scope.startConfirm = true;
  60. };
  61. // Try to create the user
  62. $scope.confirmNewUser = function () {
  63. newEntry = {
  64. "cn": $scope.newCn,
  65. "sn": $scope.newSn,
  66. "memberOf": $scope.newExtraGroups
  67. };
  68. $http.post('../user_backend/group/'+$scope.newGroup+'/create/'+$scope.newUid,
  69. {
  70. 'username': $scope.adminUid,
  71. 'password': $scope.adminPwd,
  72. 'newEntry': newEntry
  73. })
  74. .then(function (response) {
  75. result = response.data;
  76. if (result.failed === false) {
  77. $scope.newPasswd = result.newPasswd;
  78. } else {
  79. $scope.createError = result.reason;
  80. }
  81. });
  82. };
  83. // Clear old user scope variable and start creating another
  84. $scope.anotherUser = function () {
  85. delete $scope.newPasswd;
  86. delete $scope.newGroup;
  87. delete $scope.newUid;
  88. delete $scope.newCn;
  89. delete $scope.newSn;
  90. $scope.newExtraGroups = [];
  91. $scope.startConfirm = false;
  92. };
  93. $scope.editUser = function () {
  94. delete $scope.createError;
  95. $scope.startConfirm = false;
  96. };
  97. });