diff --git a/frontend-js/src/main/js/gui/admin/EditUserDialog.js b/frontend-js/src/main/js/gui/admin/EditUserDialog.js
index 15e9e545586b63e2c297852a9f4cebabadd5d602..375e96c60ef6cef6b0ffbef593da5824fc117571 100644
--- a/frontend-js/src/main/js/gui/admin/EditUserDialog.js
+++ b/frontend-js/src/main/js/gui/admin/EditUserDialog.js
@@ -295,14 +295,14 @@ EditUserDialog.prototype.init = function () {
 EditUserDialog.prototype.initProjectsTab = function () {
   var self = this;
 
-  var usersTable = $("[name=projectsTable]", self.getElement())[0];
+  var projectsTable = $("[name=projectsTable]", self.getElement())[0];
 
   var configuration = self.getConfiguration();
   var columns = self.createUserPrivilegeColumns();
-  $(usersTable).DataTable({
+  $(projectsTable).DataTable({
     columns: columns
   });
-  $(usersTable).on("click", "[name='project-privilege-checkbox']", function () {
+  $(projectsTable).on("click", "[name='project-privilege-checkbox']", function () {
     var data = $(this).attr("data").split("-");
     var privilegeType = data[0];
     var objectId = data[1];
@@ -335,7 +335,7 @@ EditUserDialog.prototype.initProjectsTab = function () {
 EditUserDialog.prototype.initPrivilegesTab = function () {
   var self = this;
 
-  var usersTable = $("[name=privilegesTable]", self.getElement())[0];
+  var privilegesTable = $("[name=privilegesTable]", self.getElement())[0];
 
   var configuration = self.getConfiguration();
   var columns = [{
@@ -343,34 +343,51 @@ EditUserDialog.prototype.initPrivilegesTab = function () {
   }, {
     title: "Value"
   }];
-  var dataTable = $(usersTable).DataTable({
+  var dataTable = $(privilegesTable).DataTable({
     columns: columns
   });
   var data = [];
 
   for (var i = 0; i < configuration.getPrivilegeTypes().length; i++) {
     var privilege = configuration.getPrivilegeTypes()[i];
+    var option;
     if (privilege.getObjectType() === null) {
       if (privilege.getValueType() === "boolean") {
         var checked = "";
         if (self.getUser().hasPrivilege(privilege)) {
           checked = "checked"
+        } else if (this.getIsNewUser()) {
+          option = this.getConfiguration().getOption('DEFAULT_' + privilege.getName());
+          if (option !== null && option !== undefined) {
+            if (option.getValue().toLowerCase() === "true") {
+              self.getUser().setPrivilege({type: privilege});
+              checked = "checked";
+            }
+          }
         }
         data.push([
           "<span>" + privilege.getCommonName() + "</span>",
           "<input type='checkbox' name='privilege-checkbox' data='" + privilege.getName() + "' " + checked + " />"
         ]);
       } else if (privilege.getValueType() === "int") {
+        var value = self.getUser().getPrivilegeValue(privilege);
+        if (this.getIsNewUser()) {
+          option = this.getConfiguration().getOption('DEFAULT_' + privilege.getName());
+          if (option !== null && option !== undefined) {
+            value = parseInt(option.getValue());
+            self.getUser().setPrivilege({type: privilege, value: value});
+          }
+        }
         data.push([
           "<span>" + privilege.getCommonName() + "</span>",
-          "<input name='privilege-int' data='" + privilege.getName() + "' value='" + self.getUser().getPrivilegeValue(privilege) + "' />"
+          "<input name='privilege-int' data='" + privilege.getName() + "' value='" + value + "' />"
         ]);
 
       }
     }
   }
   dataTable.clear().rows.add(data).draw();
-  $(usersTable).on("click", "[name='privilege-checkbox']", function () {
+  $(privilegesTable).on("click", "[name='privilege-checkbox']", function () {
     var privilegeType = $(this).attr("data");
     for (var i = 0; i < configuration.getPrivilegeTypes().length; i++) {
       var privilege = configuration.getPrivilegeTypes()[i];
@@ -380,7 +397,7 @@ EditUserDialog.prototype.initPrivilegesTab = function () {
       }
     }
   });
-  $(usersTable).on("change", "[name='privilege-int']", function () {
+  $(privilegesTable).on("change", "[name='privilege-int']", function () {
     var privilegeType = $(this).attr("data");
     var value = $(this).val();
     value = parseInt(value);
@@ -468,6 +485,15 @@ EditUserDialog.prototype.projectToTableRow = function (project, columns) {
     var checked = "";
     if (user.hasPrivilege(privilege, id)) {
       checked = "checked";
+    } else if (this.getIsNewUser()) {
+      var option = this.getConfiguration().getOption('DEFAULT_' + privilege.getName());
+      if (option !== null && option !== undefined) {
+        if (option.getValue().toLowerCase() === "true") {
+
+          user.setPrivilege({type: privilege, objectId: id});
+          checked = "checked";
+        }
+      }
     }
     row.push("<input type='checkbox' name='project-privilege-checkbox' data='" + privilege.getName() + "-" + id + "' " + checked + " />");
   }
diff --git a/frontend-js/src/main/js/map/data/User.js b/frontend-js/src/main/js/map/data/User.js
index c123aa391785d01cdc1b1c03aa17aa22833ddb79..38df58677378362b0ddc77c906b391216ba2b9b9 100644
--- a/frontend-js/src/main/js/map/data/User.js
+++ b/frontend-js/src/main/js/map/data/User.js
@@ -7,6 +7,7 @@ var logger = require('../../logger');
 
 var UserPreferences = require('./UserPreferences');
 var ObjectWithListeners = require('../../ObjectWithListeners');
+var InvalidArgumentError = require('../../InvalidArgumentError');
 
 /**
  *
@@ -208,6 +209,8 @@ User.prototype.setPrivileges = function (privileges) {
   this._privileges = privileges;
   if (this._privileges === undefined) {
     this._privileges = [];
+  } else if (Object.prototype.toString.call(privileges) !== '[object Array]') {
+    throw new InvalidArgumentError("privileges property must be an array");
   }
 };
 
diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/users/UserRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/users/UserRestImpl.java
index 43398352563d06ba223e5fb2396f8f39f72629be..3ee62cd1c649594650180a0c3b38d91637b90cbb 100644
--- a/rest-api/src/main/java/lcsb/mapviewer/api/users/UserRestImpl.java
+++ b/rest-api/src/main/java/lcsb/mapviewer/api/users/UserRestImpl.java
@@ -134,7 +134,7 @@ public class UserRestImpl extends BaseRestImpl {
           ldapAvailable = false;
         }
         value = ldapAvailable;
-      } else if (column.equals("privileges") && admin) {
+      } else if (column.equals("privileges")) {
         value = preparePrivileges(user);
       } else if (column.equals("preferences")) {
         value = preparePreferences(user);
@@ -615,6 +615,10 @@ public class UserRestImpl extends BaseRestImpl {
       }
     }
     getUserService().addUser(user);
+    getUserService().createDefaultBasicPrivilegesForUser(user);
+    for (Project project : getProjectService().getAllProjects()) {
+      getUserService().createDefaultProjectPrivilegesForUser(project, user);
+    }
     return getUser(token, login, "");
   }