89 lines
2.9 KiB
Markdown
89 lines
2.9 KiB
Markdown
|
# 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
|
||
|
|
||
|
- [x] finish this command
|
||
|
- [x] interactive guts
|
||
|
- [x] logging
|
||
|
- [x] write answers to disk
|
||
|
- [x] take out sidebar
|
||
|
- [x] add /help
|
||
|
- [x] make copy clearer (that you say whatever and *then* type verb)
|
||
|
- [x] enter to send
|
||
|
- [ ] splash screen - put off
|
||
|
- [ ] easter egg commands - put off
|
||
|
- [ ] inactivity timer(?) - put off
|
||
|
- [x] review tool
|
||
|
- [x] actual account creation
|
||
|
- [ ] backlog
|
||
|
- [ ] get a manual dump from psql of json
|
||
|
- [ ] convert into files in the review directory
|
||
|
|
||
|
|
||
|
## configuration
|
||
|
|
||
|
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`:
|
||
|
|
||
|
```
|
||
|
Match User join
|
||
|
ForceCommand /town/src/town/cmd/signup/signup
|
||
|
PubkeyAuthentication no
|
||
|
KbdInteractiveAuthentication no
|
||
|
PasswordAuthentication yes
|
||
|
PermitEmptyPasswords yes
|
||
|
DisableForwarding yes
|
||
|
```
|
||
|
|
||
|
and in `/etc/pam.d/sshd`:
|
||
|
|
||
|
```
|
||
|
auth [success=done default=ignore] pam_succeed_if.so user ingroup join
|
||
|
```
|
||
|
|
||
|
## initial thoughts
|
||
|
|
||
|
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:
|
||
|
|
||
|
- 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
|
||
|
|
||
|
A given is that the applicant is interacting with a "host" that guides them through the process. Should there be more than one host?
|
||
|
|
||
|
How many rooms should there be? 1? more?
|
||
|
|
||
|
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.
|
||
|
|
||
|
another idea/thought/dream:
|
||
|
|
||
|
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:
|
||
|
|
||
|
(For the Hollow Head was drug paraphenalia you could walk into. The building itself was the syringe, or the hookah, or the sniff-tube)
|
||
|
|
||
|
so, spatialized, every room is a question. the rooms take shape as a linear script the user moves through by:
|
||
|
|
||
|
1. answering a question
|
||
|
2. executing a verb
|
||
|
|
||
|
and finally at the end, a verb to confirm submission.
|
||
|
|
||
|
## author
|
||
|
|
||
|
vilmibm
|