WIP on welcome tool
This commit is contained in:
		
							parent
							
								
									e339fa8cb6
								
							
						
					
					
						commit
						33ea591651
					
				@ -7,8 +7,7 @@ responsible for:
 | 
				
			|||||||
2. accepting and validating a new user's username choice (ie enforcing rules and checking for dupes)
 | 
					2. accepting and validating a new user's username choice (ie enforcing rules and checking for dupes)
 | 
				
			||||||
3. accepting and validating a user's email for use in account recovery (defaulting to an email embedded in the invite token)
 | 
					3. accepting and validating a user's email for use in account recovery (defaulting to an email embedded in the invite token)
 | 
				
			||||||
4. accepting and validating a display name
 | 
					4. accepting and validating a display name
 | 
				
			||||||
5. asking what shell they'd like
 | 
					5. accepting and validating a user's public ssh key
 | 
				
			||||||
6. accepting and validating a user's public ssh key
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
upon receipt of these things a user account is created. if it fails, the user
 | 
					upon receipt of these things a user account is created. if it fails, the user
 | 
				
			||||||
is told about the failure and told to email root@tilde.town for guidance; us
 | 
					is told about the failure and told to email root@tilde.town for guidance; us
 | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +1,86 @@
 | 
				
			|||||||
package main
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import "fmt"
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"os"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/gdamore/tcell/v2"
 | 
				
			||||||
 | 
						"github.com/rivo/tview"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_ "embed"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//go:embed welcome.txt
 | 
				
			||||||
 | 
					var welcomeArt string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// TODO remove ConnectDB abstraction in favor of just connecting directly to sqliteh
 | 
				
			||||||
 | 
					// TODO move magic key machine to static page
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type newUserData struct {
 | 
				
			||||||
 | 
						Username    string
 | 
				
			||||||
 | 
						DisplayName string
 | 
				
			||||||
 | 
						Email       string
 | 
				
			||||||
 | 
						PubKey      string
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func _main() error {
 | 
				
			||||||
 | 
						app := tview.NewApplication()
 | 
				
			||||||
 | 
						//data := &newUserData{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						help := tview.NewTextView()
 | 
				
			||||||
 | 
						help.SetText("tab+enter or mouse to submit. ctrl+c to quit.")
 | 
				
			||||||
 | 
						help.SetTextColor(tcell.ColorGray)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						artView := tview.NewTextView()
 | 
				
			||||||
 | 
						artView.SetText(welcomeArt)
 | 
				
			||||||
 | 
						artView.SetDynamicColors(true)
 | 
				
			||||||
 | 
						artView.SetBackgroundColor(tcell.ColorBlack)
 | 
				
			||||||
 | 
						artView.SetTextColor(tcell.ColorPurple)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// TODO colors wacky
 | 
				
			||||||
 | 
						tokenInput := tview.NewInputField()
 | 
				
			||||||
 | 
						tokenInput.SetLabel("invite code:")
 | 
				
			||||||
 | 
						tokenInput.SetFieldWidth(40)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						tokenForm := tview.NewForm()
 | 
				
			||||||
 | 
						tokenForm.SetButtonBackgroundColor(tcell.ColorPurple)
 | 
				
			||||||
 | 
						tokenForm.SetButtonTextColor(tcell.ColorBlack)
 | 
				
			||||||
 | 
						tokenForm.SetButtonActivatedStyle(tcell.StyleDefault.Foreground(tcell.ColorWhite).Background(tcell.ColorPurple))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						tokenForm.SetLabelColor(tcell.ColorPurple)
 | 
				
			||||||
 | 
						tokenForm.SetFieldBackgroundColor(tcell.ColorPurple)
 | 
				
			||||||
 | 
						tokenForm.AddFormItem(tokenInput)
 | 
				
			||||||
 | 
						tokenForm.AddButton("submit", func() {
 | 
				
			||||||
 | 
							app.Stop()
 | 
				
			||||||
 | 
							// TODO
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						tokenPage := tview.NewFlex()
 | 
				
			||||||
 | 
						tokenPage.SetDirection(tview.FlexRow)
 | 
				
			||||||
 | 
						tokenPage.AddItem(artView, 17, -1, false)
 | 
				
			||||||
 | 
						tokenPage.AddItem(tokenForm, 5, -1, true)
 | 
				
			||||||
 | 
						tokenPage.AddItem(help, 1, -1, false)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						pages := tview.NewPages()
 | 
				
			||||||
 | 
						pages.AddPage("start", tokenPage, true, true)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						app.SetRoot(pages, true)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/*
 | 
				
			||||||
 | 
							TODO multi-page flow:
 | 
				
			||||||
 | 
							- page 1: accept invite token
 | 
				
			||||||
 | 
							- page 2: username, display name, email
 | 
				
			||||||
 | 
							- page 3: public key
 | 
				
			||||||
 | 
							- page 4: next steps
 | 
				
			||||||
 | 
						*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return app.EnableMouse(true).Run()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func main() {
 | 
					func main() {
 | 
				
			||||||
	fmt.Println("welcome")
 | 
						err := _main()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							fmt.Fprintln(os.Stderr, err)
 | 
				
			||||||
 | 
							os.Exit(1)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										19
									
								
								cmd/welcome/welcome.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								cmd/welcome/welcome.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					             _                                             (  )        . '                  
 | 
				
			||||||
 | 
					            | |                                                       .                     
 | 
				
			||||||
 | 
					         _  | |  __   __   _  _  _    _    _|_  __     __            :                      
 | 
				
			||||||
 | 
					|  |  |_|/  |/  /    /  \_/ |/ |/ |  |/     |  /  \_  / /\ __    ___!__    _,__       ___,_ 
 | 
				
			||||||
 | 
					 \/ \/  |__/|__/\___/\__/   |  |  |_/|__/   |_/\__/  / / o\/ \  /      /\ /__/ \     /__\__\
 | 
				
			||||||
 | 
					                                                      /   \\  \/_____ /_*\  |  |[^][^|  |  |
 | 
				
			||||||
 | 
					        _                                            /  /\    |      |    |_|__|  .: |__|__|
 | 
				
			||||||
 | 
					    o  | |    |                                         ||    |  {^} |    |                 
 | 
				
			||||||
 | 
					_|_    | |  __|   _  _|_  __           _  _           []  []  |   |  |    |. .   A  ._  .  .
 | 
				
			||||||
 | 
					 |  |  |/  /  |  |/   |  /  \_|  |  |_/ |/ |           _  _   |___|__|__D_|    . H  / \  {^}
 | 
				
			||||||
 | 
					 |_/|_/|__/\_/|_/|__/o|_/\__/  \/ \/    |  |_/        | |[@]  |   |    .  .  .  | |/   \  | 
 | 
				
			||||||
 | 
					                                                     _|_|_____|         .  .    |^|     \ | 
 | 
				
			||||||
 | 
					                                                           . .   v   v  .       | |      \|.
 | 
				
			||||||
 | 
					                                                                .  v  v .      / O \    /|  
 | 
				
			||||||
 | 
					                                                       |_ u _|     .  .       /  _  \  / |  
 | 
				
			||||||
 | 
					                      we're glad you're here           || | ||               /  |_|  \/  |  
 | 
				
			||||||
 | 
					                                                                             |       |   |. 
 | 
				
			||||||
 | 
					                                                    
 | 
				
			||||||
 | 
					                                                     
 | 
				
			||||||
@ -1,5 +1,7 @@
 | 
				
			|||||||
package signup
 | 
					package signup
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// TODO delete this file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"database/sql"
 | 
						"database/sql"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user