summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2010-12-08 16:06:04 +0000
committerSimon MacMullen <simon@rabbitmq.com>2010-12-08 16:06:04 +0000
commita504a513243c0e5e5af7a198544414952f0b170e (patch)
treeb63e79646901d8e1a44deef7bfbc813f170032a5
parent4e4cdeb8ff99b6a9bd00fed681dbfdf39436bbbf (diff)
downloadrabbitmq-server-git-a504a513243c0e5e5af7a198544414952f0b170e.tar.gz
rabbitmqctl clear_password <username>
-rw-r--r--docs/rabbitmqctl.1.xml19
-rw-r--r--src/rabbit_access_control.erl6
-rw-r--r--src/rabbit_control.erl4
3 files changed, 28 insertions, 1 deletions
diff --git a/docs/rabbitmqctl.1.xml b/docs/rabbitmqctl.1.xml
index 6b02abe438..7605090c07 100644
--- a/docs/rabbitmqctl.1.xml
+++ b/docs/rabbitmqctl.1.xml
@@ -466,6 +466,25 @@
</varlistentry>
<varlistentry>
+ <term><cmdsynopsis><command>clear_password</command> <arg choice="req"><replaceable>username</replaceable></arg></cmdsynopsis></term>
+ <listitem>
+ <variablelist>
+ <varlistentry>
+ <term>username</term>
+ <listitem><para>The name of the user whose password is to be cleared.</para></listitem>
+ </varlistentry>
+ </variablelist>
+ <para role="example-prefix">For example:</para>
+ <screen role="example">rabbitmqctl clear_password tonyg</screen>
+ <para role="example">
+ This command instructs the RabbitMQ broker to clear the
+ password for the user named
+ <command>tonyg</command>. This user now cannot log in.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
<term><cmdsynopsis><command>set_admin</command> <arg choice="req"><replaceable>username</replaceable></arg></cmdsynopsis></term>
<listitem>
<variablelist>
diff --git a/src/rabbit_access_control.erl b/src/rabbit_access_control.erl
index bc5880130d..9141e7cdb8 100644
--- a/src/rabbit_access_control.erl
+++ b/src/rabbit_access_control.erl
@@ -36,7 +36,7 @@
-export([check_login/2, user_pass_login/2, check_user_pass_login/2,
check_vhost_access/2, check_resource_access/3]).
-export([add_user/2, delete_user/1, change_password/2, set_admin/1,
- clear_admin/1, list_users/0, lookup_user/1]).
+ clear_admin/1, list_users/0, lookup_user/1, clear_password/1]).
-export([change_password_hash/2, hash_password/1]).
-export([add_vhost/1, delete_vhost/1, vhost_exists/1, list_vhosts/0]).
-export([set_permissions/5, clear_permissions/2,
@@ -72,6 +72,7 @@
-spec(add_user/2 :: (username(), password()) -> 'ok').
-spec(delete_user/1 :: (username()) -> 'ok').
-spec(change_password/2 :: (username(), password()) -> 'ok').
+-spec(clear_password/1 :: (username()) -> 'ok').
-spec(change_password_hash/2 :: (username(), password_hash()) -> 'ok').
-spec(hash_password/1 :: (password()) -> password_hash()).
-spec(set_admin/1 :: (username()) -> 'ok').
@@ -250,6 +251,9 @@ delete_user(Username) ->
change_password(Username, Password) ->
change_password_hash(Username, hash_password(Password)).
+clear_password(Username) ->
+ change_password_hash(Username, <<"">>).
+
change_password_hash(Username, PasswordHash) ->
R = update_user(Username, fun(User) ->
User#user{ password_hash = PasswordHash }
diff --git a/src/rabbit_control.erl b/src/rabbit_control.erl
index 360217a221..df55d9612b 100644
--- a/src/rabbit_control.erl
+++ b/src/rabbit_control.erl
@@ -211,6 +211,10 @@ action(change_password, Node, Args = [Username, _Newpassword], _Opts, Inform) ->
Inform("Changing password for user ~p", [Username]),
call(Node, {rabbit_access_control, change_password, Args});
+action(clear_password, Node, Args = [Username], _Opts, Inform) ->
+ Inform("Clearing password for user ~p", [Username]),
+ call(Node, {rabbit_access_control, clear_password, Args});
+
action(set_admin, Node, [Username], _Opts, Inform) ->
Inform("Setting administrative status for user ~p", [Username]),
call(Node, {rabbit_access_control, set_admin, [Username]});