# Ordinary
## Initialization
Each admin server can be run with a dedicated environment context. You first initialize an environment to run the admin server off of.
You initialize an environment with an environment name (in the example below it's `my-admin-environment`), a port, and a password for the root user.
```sh
cargo run -p ordinary init my-environment 8080 mYpAsSWorD123!
```
After the above command is run, it will spit out a link that can be pasted into the browser to reveal the MFA QR code. Saving this code in an authenticator app will be necessary for logging in to the web-based admin console.
## Running
You can run an admin server by providing it with the environment name. The admin server starts up on port 8080 and serves the web-based admin console.
```sh
cargo run -p ordinary start my-environment
```
## Commands
All configuration and deployment can be managed via the CLI and Web Console. Each command -- whether issued from the CLI or the Console -- is sent as an HTTP request to the running admin server.
### Auth
Logging in results in the acquiring of a refresh token, which is then used to fetch finer-grained access tokens.
#### Login
```sh
cargo run -p ordinary login 0.0.0.0:8080 root mYpAsSWorD123! 000000
```
#### Logout
```sh
cargo run -p ordinary logout 0.0.0.0:8080
```
### Users
Console users are created in order to deploy and manage applications.
#### List
Lists all users that are in groups your user has access to.
```sh
cargo run -p ordinary user 0.0.0.0:8080 list
```
#### Create
Create a new user with the username `swatters` a password that is `asdf1234` and an initial group assignment to `my-group`.
This command will produce the same base64 encoded QR code png for MFA.
```sh
cargo run -p ordinary user 0.0.0.0:8080 create swatters asdf1234 my-group
```
#### Delete
*Can only be done by the `root` user.* The conventional way to offboard a user up until the point of deletion is just to remove them from every group that they were previously assigned.
```sh
cargo run -p ordinary user 0.0.0.0:8080 delete swatters
```
#### Assign
#### Remove