24
24
namespace Google \Cloud \Samples \Storage ;
25
25
26
26
# [START remove_bucket_iam_member]
27
+ use Google \Cloud \Core \Iam \PolicyBuilder ;
27
28
use Google \Cloud \Storage \StorageClient ;
28
29
29
30
/**
@@ -39,26 +40,11 @@ function remove_bucket_iam_member($bucketName, $role, $member)
39
40
{
40
41
$ storage = new StorageClient ();
41
42
$ bucket = $ storage ->bucket ($ bucketName );
42
-
43
43
$ policy = $ bucket ->iam ()->policy ();
44
+ $ policyBuilder = new PolicyBuilder ($ policy );
45
+ $ policyBuilder ->removeBinding ($ role , [$ member ]);
44
46
45
- foreach ($ policy ['bindings ' ] as $ i => &$ binding ) {
46
- if ($ binding ['role ' ] == $ role ) {
47
- if (false !== $ j = array_search ($ member , $ binding ['members ' ])) {
48
- unset($ binding ['members ' ][$ j ]);
49
- $ binding ['members ' ] = array_values ($ binding ['members ' ]);
50
- if (empty ($ binding ['members ' ])) {
51
- unset($ policy ['bindings ' ][$ i ]);
52
- $ policy ['bindings ' ] = array_values ($ policy ['bindings ' ]);
53
- }
54
- $ bucket ->iam ()->setPolicy ($ policy );
55
- printf ('User %s removed from role %s for bucket %s ' . PHP_EOL , $ member , $ role , $ bucketName );
56
- return ;
57
- } else {
58
- printf ('Member %s not found for role %s for bucket %s. ' . PHP_EOL , $ member , $ role , $ bucketName );
59
- }
60
- }
61
- }
62
- printf ('Role %s not found for bucket %s. ' . PHP_EOL , $ role , $ bucketName );
47
+ $ bucket ->iam ()->setPolicy ($ policyBuilder ->result ());
48
+ printf ('User %s removed from role %s for bucket %s ' . PHP_EOL , $ member , $ role , $ bucketName );
63
49
}
64
50
# [END remove_bucket_iam_member]
0 commit comments