@@ -156,6 +156,8 @@ public function boot()
156156 return $ user ->hasAccess ('self.checkout_assets ' );
157157 });
158158
159+ // This is largely used to determine whether to display the gear icon sidenav
160+ // in the left-side navigation
159161 Gate::define ('backend.interact ' , function ($ user ) {
160162 return $ user ->can ('view ' , Statuslabel::class)
161163 || $ user ->can ('view ' , AssetModel::class)
@@ -168,7 +170,21 @@ public function boot()
168170 || $ user ->can ('view ' , Manufacturer::class)
169171 || $ user ->can ('view ' , CustomField::class)
170172 || $ user ->can ('view ' , CustomFieldset::class)
171- || $ user ->can ('view ' , Depreciation::class);
173+ || $ user ->can ('view ' , Depreciation::class);
174+ });
175+
176+
177+ // This determines whether or not an API user should be able to get the selectlists.
178+ // This can seem a little confusing, since view properties may not have been granted
179+ // to the logged in API user, but creating assets, licenses, etc won't work
180+ // if the user can't view and interact with the select lists.
181+ Gate::define ('view.selectlists ' , function ($ user ) {
182+ return $ user ->can (['create ' ,'update ' ], Asset::class)
183+ || $ user ->can (['create ' ,'update ' ], License::class)
184+ || $ user ->can (['create ' ,'update ' ], Component::class)
185+ || $ user ->can (['create ' ,'update ' ], Consumable::class)
186+ || $ user ->can (['create ' ,'update ' ], Accessory::class)
187+ || $ user ->can (['create ' ,'update ' ], User::class);
172188 });
173189 }
174190}
0 commit comments