|
17 | 17 | -export([add_user/3, add_user/4, add_user/5, delete_user/2, lookup_user/1, exists/1, |
18 | 18 | change_password/3, clear_password/2, |
19 | 19 | hash_password/2, change_password_hash/2, change_password_hash/3, |
20 | | - set_tags/3, set_permissions/6, clear_permissions/3, clear_permissions_for_vhost/2, set_permissions_globally/5, |
21 | | - set_topic_permissions/6, clear_topic_permissions/3, clear_topic_permissions/4, clear_topic_permissions_for_vhost/2, |
| 20 | + set_tags/3, set_permissions/6, clear_permissions/3, set_permissions_globally/5, |
| 21 | + set_topic_permissions/6, clear_topic_permissions/3, clear_topic_permissions/4, |
| 22 | + clear_all_permissions_for_vhost/2, |
22 | 23 | add_user_sans_validation/3, put_user/2, put_user/3, |
23 | 24 | update_user/5, |
24 | 25 | update_user_with_hash/5, |
@@ -540,8 +541,35 @@ clear_permissions(Username, VirtualHost, ActingUser) -> |
540 | 541 | erlang:raise(Class, Error, Stacktrace) |
541 | 542 | end. |
542 | 543 |
|
543 | | -clear_permissions_for_vhost(VirtualHost, _ActingUser) -> |
544 | | - rabbit_db_user:clear_matching_user_permissions('_', VirtualHost). |
| 544 | +-spec clear_all_permissions_for_vhost(VirtualHost, ActingUser) -> Ret when |
| 545 | + VirtualHost :: rabbit_types:vhost(), |
| 546 | + ActingUser :: rabbit_types:username(), |
| 547 | + Ret :: ok | {error, Reason :: any()}. |
| 548 | + |
| 549 | +clear_all_permissions_for_vhost(VirtualHost, ActingUser) -> |
| 550 | + case rabbit_db_user:clear_all_permissions_for_vhost(VirtualHost) of |
| 551 | + {ok, Deletions} -> |
| 552 | + lists:foreach( |
| 553 | + fun (#topic_permission{topic_permission_key = |
| 554 | + #topic_permission_key{user_vhost = |
| 555 | + #user_vhost{username = Username}}}) -> |
| 556 | + rabbit_event:notify( |
| 557 | + topic_permission_deleted, |
| 558 | + [{user, Username}, |
| 559 | + {vhost, VirtualHost}, |
| 560 | + {user_who_performed_action, ActingUser}]); |
| 561 | + (#user_permission{user_vhost = |
| 562 | + #user_vhost{username = Username}}) -> |
| 563 | + rabbit_event:notify( |
| 564 | + permission_deleted, |
| 565 | + [{user, Username}, |
| 566 | + {vhost, VirtualHost}, |
| 567 | + {user_who_performed_action, ActingUser}]) |
| 568 | + end, Deletions), |
| 569 | + ok; |
| 570 | + {error, _} = Err -> |
| 571 | + Err |
| 572 | + end. |
545 | 573 |
|
546 | 574 | set_permissions_globally(Username, ConfigurePerm, WritePerm, ReadPerm, ActingUser) -> |
547 | 575 | VirtualHosts = rabbit_vhost:list_names(), |
@@ -642,9 +670,6 @@ clear_topic_permissions(Username, VirtualHost, Exchange, ActingUser) -> |
642 | 670 | erlang:raise(Class, Error, Stacktrace) |
643 | 671 | end. |
644 | 672 |
|
645 | | -clear_topic_permissions_for_vhost(VirtualHost, _ActingUser) -> |
646 | | - rabbit_db_user:clear_matching_topic_permissions('_', VirtualHost, '_'). |
647 | | - |
648 | 673 | put_user(User, ActingUser) -> put_user(User, undefined, ActingUser). |
649 | 674 |
|
650 | 675 | put_user(User, Version, ActingUser) -> |
|
0 commit comments