Robin Thoni 8 лет назад
Родитель
Сommit
3673b692fb

+ 0
- 4
src/Auth/Business/LuticateSettingsBusiness.php Просмотреть файл

@@ -96,8 +96,6 @@ class LuticateSettingsBusiness extends LuBusiness {
96 96
 
97 97
         $setting = LuStringUtils::convertJsonString($val->getSetting());
98 98
         $setting["Value"] = json_decode($setting["Value"]);
99
-        unset($setting["IsBlocked"]);
100
-        unset($setting["IsAdmin"]);
101 99
         return $setting;
102 100
     }
103 101
 
@@ -107,8 +105,6 @@ class LuticateSettingsBusiness extends LuBusiness {
107 105
         {
108 106
             $setting = $value["Settings"];
109 107
             $setting["Value"] = json_decode($setting["Value"]);
110
-            unset($setting["IsBlocked"]);
111
-            unset($setting["IsAdmin"]);
112 108
             return $setting;
113 109
         });
114 110
     }

+ 26
- 15
src/Auth/Business/LuticateSettingsUsersBusiness.php Просмотреть файл

@@ -29,27 +29,38 @@ class LuticateSettingsUsersBusiness extends LuBusiness {
29 29
         return LuticateSettingsUsersDataAccess::getAllByUser($user_id, $page, $perPage);
30 30
     }
31 31
 
32
-    public static function edit($user_id, $setting_name, $setting_value)
32
+    /**
33
+     * @param $user_setting LuticateSettingsUsersDbo
34
+     * @param $admin_edit bool
35
+     * @return bool
36
+     */
37
+    public static function edit($user_setting, $admin_edit)
33 38
     {
34
-        $setting_value = json_decode($setting_value);
35
-        LuticateUsersBusiness::checkUserId($user_id);
36
-        $setting = LuticateSettingsBusiness::checkSettingName($setting_name);
37
-        if (is_null($setting_value)) {
38
-            LuticateSettingsUsersDataAccess::delete($user_id, $setting_name);
39
+        LuticateUsersBusiness::checkUserId($user_setting->getUserId());
40
+        $setting = LuticateSettingsBusiness::checkSettingName($user_setting->getName());
41
+        if ($setting->getIsBlocked() && !$admin_edit) {
42
+            self::unauthorized("Setting is blocked");
43
+        }
44
+        if (is_null($user_setting->getValue())) {
45
+            LuticateSettingsUsersDataAccess::delete($user_setting->getUserId(), $user_setting->getName());
39 46
         } else {
40
-            $setting->setValue($setting_value);
47
+            $setting->setValue($user_setting->getValue());
41 48
             LuticateSettingsBusiness::checkSetting($setting);
42
-            $setting_value = json_encode($setting_value);
43
-            $user_setting = LuticateSettingsUsersDataAccess::getByName($user_id, $setting_name);
44
-            if (is_null($user_setting)) {
45
-                $user_setting = new LuticateSettingsUsersDbo();
46
-                $user_setting->setName($setting_name);
47
-                $user_setting->setValue($setting_value);
48
-                $user_setting->setUserId($user_id);
49
+            $user_setting->setValue(json_encode($user_setting->getValue()));
50
+            $real_user_setting = LuticateSettingsUsersDataAccess::getByName($user_setting->getUserId(), $user_setting->getName());
51
+            if (is_null($real_user_setting)) {
52
+                if (is_null($user_setting->getIsBlocked())) {
53
+                    $user_setting->setIsBlocked(false);
54
+                }
49 55
                 LuticateSettingsUsersDataAccess::add($user_setting);
50 56
             }
51 57
             else {
52
-                $user_setting->setValue($setting_value);
58
+                if ($real_user_setting->getIsBlocked() && !$admin_edit) {
59
+                    self::unauthorized("User setting is blocked");
60
+                }
61
+                if (is_null($user_setting->getIsBlocked())) {
62
+                    $user_setting->setIsBlocked($real_user_setting->getIsBlocked());
63
+                }
53 64
                 LuticateSettingsUsersDataAccess::edit($user_setting);
54 65
             }
55 66
         }

+ 13
- 6
src/Auth/Controller/LuticateSettingsUsersController.php Просмотреть файл

@@ -40,23 +40,30 @@ class LuticateSettingsUsersController extends LuController {
40 40
      * Edit a setting for a user
41 41
      * @param $user_id int The user id
42 42
      * @param $setting_name string The setting name
43
-     * @param $setting_value bool The setting value
43
+     * @param $setting LuticateSettingsUsersDbo The setting
44 44
      * @return bool
45 45
      */
46
-    public function edit($user_id, $setting_name, $setting_value = null)
46
+    public function edit($user_id, $setting_name, LuticateSettingsUsersDbo $setting)
47 47
     {
48
-        return LuticateSettingsUsersBusiness::edit($user_id, $setting_name, $setting_value);
48
+        $setting->setUserId($user_id);
49
+        $setting->setName($setting_name);
50
+        return LuticateSettingsUsersBusiness::edit($setting, true);
49 51
     }
50 52
 
51 53
     /**
52 54
      * Edit a setting for the logged user
53 55
      * @param $_user LuticateUsersDbo The logged user
54 56
      * @param $setting_name string The setting name
55
-     * @param $setting_value bool The setting value
57
+     * @param $setting_value string The setting value
56 58
      * @return bool
57 59
      */
58
-    public function editMe($_user, $setting_name, $setting_value = null)
60
+    public function editMe($_user, $setting_name, $setting_value)
59 61
     {
60
-        return LuticateSettingsUsersBusiness::edit($_user->getId(), $setting_name, $setting_value);
62
+        $setting = new LuticateSettingsUsersDbo();
63
+        $setting->setUserId($_user->getId());
64
+        $setting->setName($setting_name);
65
+        $setting->setIsBlocked(null);
66
+        $setting->setValue($setting_value);
67
+        return LuticateSettingsUsersBusiness::edit($setting, false);
61 68
     }
62 69
 }

+ 19
- 1
src/Auth/DBO/LuticateSettingsUsersDbo.php Просмотреть файл

@@ -16,7 +16,8 @@ class LuticateSettingsUsersDbo extends LuDbo {
16 16
         return array(
17 17
             "Name" => $this->_name,
18 18
             "Value" => $this->_value,
19
-            "UserId" => $this->_userId
19
+            "UserId" => $this->_userId,
20
+            "IsBlocked" => $this->_isBlocked
20 21
         );
21 22
     }
22 23
 
@@ -32,6 +33,9 @@ class LuticateSettingsUsersDbo extends LuDbo {
32 33
         if (isset($json["UserId"])) {
33 34
             $dbo->setUserId($json["UserId"]);
34 35
         }
36
+        if (isset($json["IsBlocked"])) {
37
+            $dbo->setIsBlocked($json["IsBlocked"]);
38
+        }
35 39
         return $dbo;
36 40
     }
37 41
 
@@ -41,6 +45,7 @@ class LuticateSettingsUsersDbo extends LuDbo {
41 45
         $dbo->setName("sample string");
42 46
         $dbo->setValue("sample string");
43 47
         $dbo->setUserId(42);
48
+        $dbo->setIsBlocked(true);
44 49
         return $dbo;
45 50
     }
46 51
 
@@ -82,4 +87,17 @@ class LuticateSettingsUsersDbo extends LuDbo {
82 87
     {
83 88
         $this->_userId = $value;
84 89
     }
90
+
91
+    /**
92
+     * @var boolean
93
+     */
94
+    protected $_isBlocked;
95
+    public function getIsBlocked()
96
+    {
97
+        return $this->_isBlocked;
98
+    }
99
+    public function setIsBlocked($value)
100
+    {
101
+        $this->_isBlocked = $value;
102
+    }
85 103
 }

+ 1
- 0
src/Auth/DataAccess/LuticateSettingsUsersDataAccess.php Просмотреть файл

@@ -51,6 +51,7 @@ class LuticateSettingsUsersDataAccess extends LuDataAccess {
51 51
         if (is_null($user_setting))
52 52
             return;
53 53
         $user_setting_model->value = $user_setting->getValue();
54
+        $user_setting_model->is_blocked = $user_setting->getIsBlocked();
54 55
         $user_setting_model->save();
55 56
     }
56 57
 }

+ 2
- 0
src/Auth/DataAccess/Models/LuticateSettingsUsersModel.php Просмотреть файл

@@ -28,6 +28,7 @@ class LuticateSettingsUsersModel extends LuModel
28 28
         $dbo->setName($this->name);
29 29
         $dbo->setValue($this->value);
30 30
         $dbo->setUserId($this->user_id);
31
+        $dbo->setIsBlocked($this->is_blocked);
31 32
 
32 33
         return $dbo;
33 34
     }
@@ -45,6 +46,7 @@ class LuticateSettingsUsersModel extends LuModel
45 46
         $model->name = $dbo->getName();
46 47
         $model->value = $dbo->getValue();
47 48
         $model->user_id = $dbo->getUserId();
49
+        $model->is_blocked = $dbo->getIsBlocked();
48 50
 
49 51
         return $model;
50 52
     }

Загрузка…
Отмена
Сохранить