2424namespace Google \Cloud \Samples \Storage ;
2525
2626# [START remove_bucket_iam_member]
27+ use Google \Cloud \Core \Iam \PolicyBuilder ;
2728use Google \Cloud \Storage \StorageClient ;
2829
2930/**
@@ -39,26 +40,11 @@ function remove_bucket_iam_member($bucketName, $role, $member)
3940{
4041 $ storage = new StorageClient ();
4142 $ bucket = $ storage ->bucket ($ bucketName );
42-
4343 $ policy = $ bucket ->iam ()->policy ();
44+ $ policyBuilder = new PolicyBuilder ($ policy );
45+ $ policyBuilder ->removeBinding ($ role , [$ member ]);
4446
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 );
6349}
6450# [END remove_bucket_iam_member]
0 commit comments