# `mix macaw_auth.user`
[🔗](https://github.com/dcoai/macaw_auth/blob/v0.4.1/lib/mix/tasks/macaw_auth.user.ex#L1)

Administers the native backend's users, against the configured repo:

    mix macaw_auth.user list
    MACAW_AUTH_USER_PASSWORD='…' mix macaw_auth.user add NAME --role R [--role R…]
    mix macaw_auth.user disable NAME
    mix macaw_auth.user enable NAME
    MACAW_AUTH_USER_PASSWORD='…' mix macaw_auth.user password NAME
    mix macaw_auth.user roles NAME R…
    mix macaw_auth.user reset-second-factor NAME

The output is one JSON object per line on stdout, as the release entry
points' (`Macaw.Auth.Native.Release`) is. An error is one JSON object,
`{"ok": false, "error": "…"}`, on stderr, and the task exits with status 1.

**The password comes from the `MACAW_AUTH_USER_PASSWORD` environment
variable, never the command line,** where `ps` and shell history would
show it; a `--password` or `-p` among the arguments is refused. It
appears nowhere in the output.

`password` and `reset-second-factor` revoke the user's sessions; this
task runs apart from the app, so their open pages leave at their next
re-check rather than at once. The commands are
`Macaw.Auth.Native.UserCommands`.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
