town/cmd/signup/README.md

96 lines
3.1 KiB
Markdown
Raw Normal View History

# town signup
The point of this command is to enable signing up for tilde.town via an ssh connection. It is designed to be run when `join@tilde.town` is SSH'd to.
## to-dos
2023-02-13 06:15:19 +00:00
- [x] finish this command
2023-02-14 04:15:10 +00:00
- [x] interactive guts
- [x] logging
2023-02-14 04:15:10 +00:00
- [x] write answers to disk
2023-02-21 06:13:51 +00:00
- [x] take out sidebar
- [x] add /help
2023-02-14 04:15:10 +00:00
- [ ] make copy clearer (that you say whatever and *then* type verb)
2023-02-21 06:13:51 +00:00
- [x] enter to send
2023-02-14 04:15:10 +00:00
- [ ] splash screen - put off
- [ ] easter egg commands - put off
- [ ] inactivity timer(?) - put off
- [ ] review tool
2023-02-21 06:13:51 +00:00
- [x] iterate over answers
- [ ] accept
- [ ] notate
- [ ] reject
- [ ] send email with directions on key upload
- [ ] actual account creation
- [ ] accept key
- [ ] accept username
- [ ] create user
- [ ] backlog
- [ ] get a manual dump from psql of json
- [ ] convert into files in the review directory
## configuration
2023-02-21 06:13:51 +00:00
On disk assumptions:
- `/town/var/signups` exists and is owned by user `join` and group `admin`
- `/town/var/signups/log` exists and is owned by user `join` and group `admin`
Assumes the following has been run:
```bash
sqlite3 /town/var/signups/signups.db < /town/src/town/sql/create_signups_table.sql
sudo chown join:admin /town/var/signups/signups.db
```
It assumes, in `sshd_config`:
2023-02-03 03:48:40 +00:00
```
Match User join
ForceCommand /town/src/town/cmd/signup/signup
PubkeyAuthentication no
KbdInteractiveAuthentication no
PasswordAuthentication yes
PermitEmptyPasswords yes
DisableForwarding yes
```
2023-02-03 03:48:40 +00:00
and in `/etc/pam.d/sshd`:
2023-02-03 03:48:40 +00:00
```
auth [success=done default=ignore] pam_succeed_if.so user ingroup join
```
2023-02-03 03:48:40 +00:00
## initial thoughts
2023-02-03 03:48:40 +00:00
I need a script for how this interaction should go. It should feel more organic and fluid than just filling out a form. It shouldn't, however, take more than 10 minutes to get through stuff. The end result is to collect:
2023-02-03 03:48:40 +00:00
- an email address
- how a user found out about the town
- if they have a referral from an existing member
- what interests them about the town
- any links to personal websites or social media
2023-02-03 03:48:40 +00:00
A given is that the applicant is interacting with a "host" that guides them through the process. Should there be more than one host?
2023-02-03 03:48:40 +00:00
How many rooms should there be? 1? more?
2023-02-03 03:48:40 +00:00
in terms of data collection, I intend to just save the transcript of their interaction instead of more structured data. The only real structured data are email and referral.
2023-02-03 03:48:40 +00:00
another idea/thought/dream:
2023-02-03 03:48:40 +00:00
the whole point of this is to spatialize a form. it's a form! a set of questions and corresponding textarea elements. but in order to trigger self reflection -- as well as a feeling of being seen by another (in a good way) -- i want to turn the form into a shape. i'm thinking about this like the room in Eclipse Penumbra:
2023-02-03 03:48:40 +00:00
(For the Hollow Head was drug paraphenalia you could walk into. The building itself was the syringe, or the hookah, or the sniff-tube)
2023-02-03 03:48:40 +00:00
so, spatialized, every room is a question. the rooms take shape as a linear script the user moves through by:
2023-02-03 03:48:40 +00:00
1. answering a question
2. executing a verb
2023-02-03 03:48:40 +00:00
and finally at the end, a verb to confirm submission.
2023-02-03 03:48:40 +00:00
## author
2023-02-03 03:48:40 +00:00
vilmibm