Merge pull request #351 from prasket/matrix-change-user-admin-status
Matrix change user admin status
This commit is contained in:
		@@ -24,11 +24,14 @@ If you've just installed Matrix, **to finalize the installation process**, it's
 | 
			
		||||
 | 
			
		||||
-----
 | 
			
		||||
 | 
			
		||||
The script `/usr/local/bin/matrix-make-user-admin` may be used to upgrade a user's privileges:
 | 
			
		||||
 | 
			
		||||
## Adding/Removing Administrator privileges to an existing user.  
 | 
			
		||||
 | 
			
		||||
The script `/usr/local/bin/matrix-change-user-admin-status` may be used to change a user's admin privileges.
 | 
			
		||||
 | 
			
		||||
* log on to your server with ssh
 | 
			
		||||
* execute with the username:
 | 
			
		||||
* execute with the username and 0/1 (0 = non-admin | 1 = admin)
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
/usr/local/bin/matrix-make-user-admin <username>
 | 
			
		||||
/usr/local/bin/matrix-change-user-admin-status <username> <0/1>
 | 
			
		||||
```
 | 
			
		||||
 
 | 
			
		||||
@@ -34,9 +34,9 @@ where `<password-hash>` is the hash returned by the docker command above.
 | 
			
		||||
 | 
			
		||||
Use the Synapse User Admin API as described here: https://github.com/matrix-org/synapse/blob/master/docs/admin_api/user_admin_api.rst#reset-password
 | 
			
		||||
 | 
			
		||||
Note this method will log the user out of all of their clients while the other options do not.
 | 
			
		||||
This requires an access token from a server admin account. *This method will also log the user out of all of their clients while the other options do not.* 
 | 
			
		||||
 | 
			
		||||
This option requires an access token from a server admin account. If you didn't make your account a server admin when you created it, you can use the `/usr/local/bin/matrix-make-user-admin` script as described in [registering-users.md](registering-users.md). 
 | 
			
		||||
If you didn't make your account a server admin when you created it, you can use the `/usr/local/bin/matrix-change-user-admin-status` script as described in [registering-users.md](registering-users.md). 
 | 
			
		||||
 | 
			
		||||
### Example:
 | 
			
		||||
To set @user:domain.com's password to `correct_horse_battery_staple` you could use this curl command:
 | 
			
		||||
 
 | 
			
		||||
@@ -73,13 +73,19 @@
 | 
			
		||||
    mode: 0750
 | 
			
		||||
  when: matrix_postgres_enabled|bool
 | 
			
		||||
 | 
			
		||||
- name: Ensure matrix-make-user-admin script created
 | 
			
		||||
- name: Ensure matrix-change-user-admin-status script created
 | 
			
		||||
  template:
 | 
			
		||||
    src: "{{ role_path }}/templates/usr-local-bin/matrix-make-user-admin.j2"
 | 
			
		||||
    dest: "/usr/local/bin/matrix-make-user-admin"
 | 
			
		||||
    src: "{{ role_path }}/templates/usr-local-bin/matrix-change-user-admin-status.j2"
 | 
			
		||||
    dest: "/usr/local/bin/matrix-change-user-admin-status"
 | 
			
		||||
    mode: 0750
 | 
			
		||||
  when: matrix_postgres_enabled|bool
 | 
			
		||||
 | 
			
		||||
- name: (Migration) Ensure old matrix-make-user-admin script deleted
 | 
			
		||||
  file:
 | 
			
		||||
    path: "/usr/local/bin/matrix-make-user-admin"
 | 
			
		||||
    state: absent
 | 
			
		||||
  when: matrix_postgres_enabled|bool
 | 
			
		||||
 | 
			
		||||
- name: Ensure matrix-postgres-update-user-password-hash script created
 | 
			
		||||
  template:
 | 
			
		||||
    src: "{{ role_path }}/templates/usr-local-bin/matrix-postgres-update-user-password-hash.j2"
 | 
			
		||||
@@ -146,6 +152,6 @@
 | 
			
		||||
    state: absent
 | 
			
		||||
  with_items:
 | 
			
		||||
    - matrix-postgres-cli
 | 
			
		||||
    - matrix-make-user-admin
 | 
			
		||||
    - matrix-change-user-admin-status
 | 
			
		||||
    - matrix-postgres-update-user-password-hash
 | 
			
		||||
  when: "not matrix_postgres_enabled|bool"
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,19 @@
 | 
			
		||||
#jinja2: lstrip_blocks: "True"
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
if [ $# -ne 2 ]; then
 | 
			
		||||
	echo "Usage: "$0" <username> <0/1>"
 | 
			
		||||
	echo "Usage: 0 = non-admin"
 | 
			
		||||
	echo "Usage: 1 = admin"
 | 
			
		||||
	exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
docker run \
 | 
			
		||||
	-it \
 | 
			
		||||
	--rm \
 | 
			
		||||
	--user=991:991 \
 | 
			
		||||
	--cap-drop=ALL \
 | 
			
		||||
	--env-file=/matrix/postgres/env-postgres-psql \
 | 
			
		||||
	--network matrix \
 | 
			
		||||
	postgres:12.1-alpine \
 | 
			
		||||
	psql -h matrix-postgres -c "UPDATE users set admin=$2 WHERE name like '@$1:{{ matrix_domain }}'"
 | 
			
		||||
@@ -1,17 +0,0 @@
 | 
			
		||||
#jinja2: lstrip_blocks: "True"
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
if [ $# -ne 1 ]; then
 | 
			
		||||
	echo "Usage: "$0" <username>"
 | 
			
		||||
	exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
docker run \
 | 
			
		||||
	-it \
 | 
			
		||||
	--rm \
 | 
			
		||||
	--user={{ matrix_user_uid }}:{{ matrix_user_gid }} \
 | 
			
		||||
    --cap-drop=ALL \
 | 
			
		||||
	--env-file={{ matrix_postgres_base_path }}/env-postgres-psql \
 | 
			
		||||
	--network {{ matrix_docker_network }} \
 | 
			
		||||
	{{ matrix_postgres_docker_image_to_use }} \
 | 
			
		||||
	psql -h {{ matrix_postgres_connection_hostname }} -c "UPDATE users set admin=1 WHERE name like '@$1:{{ matrix_domain }}'"
 | 
			
		||||
		Reference in New Issue
	
	Block a user