2
2
3
3
namespace Statamic \Policies ;
4
4
5
+ use Illuminate \Support \Facades \Gate ;
6
+ use Statamic \Contracts \Assets \Asset as AssetContract ;
5
7
use Statamic \Facades \User ;
6
8
7
9
class AssetFolderPolicy
@@ -25,10 +27,14 @@ public function move($user, $assetFolder)
25
27
return false ;
26
28
}
27
29
28
- return $ assetFolder
29
- ->assets (true )
30
- ->reject (fn ($ asset ) => $ user ->can ('move ' , $ asset ))
31
- ->isEmpty ();
30
+ if ($ this ->isUsingCustomAssetPolicy ()) {
31
+ return $ assetFolder
32
+ ->assets (true )
33
+ ->reject (fn ($ asset ) => $ user ->can ('move ' , $ asset ))
34
+ ->isEmpty ();
35
+ }
36
+
37
+ return $ assetFolder ->container ()->allowMoving ();
32
38
}
33
39
34
40
public function rename ($ user , $ assetFolder )
@@ -39,10 +45,14 @@ public function rename($user, $assetFolder)
39
45
return false ;
40
46
}
41
47
42
- return $ assetFolder
43
- ->assets (true )
44
- ->reject (fn ($ asset ) => $ user ->can ('rename ' , $ asset ))
45
- ->isEmpty ();
48
+ if ($ this ->isUsingCustomAssetPolicy ()) {
49
+ return $ assetFolder
50
+ ->assets (true )
51
+ ->reject (fn ($ asset ) => $ user ->can ('rename ' , $ asset ))
52
+ ->isEmpty ();
53
+ }
54
+
55
+ return $ assetFolder ->container ()->allowRenaming ();
46
56
}
47
57
48
58
public function delete ($ user , $ assetFolder )
@@ -53,9 +63,18 @@ public function delete($user, $assetFolder)
53
63
return false ;
54
64
}
55
65
56
- return $ assetFolder
57
- ->assets (true )
58
- ->reject (fn ($ asset ) => $ user ->can ('delete ' , $ asset ))
59
- ->isEmpty ();
66
+ if ($ this ->isUsingCustomAssetPolicy ()) {
67
+ return $ assetFolder
68
+ ->assets (true )
69
+ ->reject (fn ($ asset ) => $ user ->can ('delete ' , $ asset ))
70
+ ->isEmpty ();
71
+ }
72
+
73
+ return true ;
74
+ }
75
+
76
+ protected function isUsingCustomAssetPolicy ()
77
+ {
78
+ return Gate::policies ()[AssetContract::class] !== AssetPolicy::class;
60
79
}
61
80
}
0 commit comments