hlfw.ca

webbing

Download patch

ref: 5ed44f3b7def5c6870ec1f1d55d0aa63de0301c4
parent: b1860da1690842cb75811b987217fb2a6e9d692e
author: Moses Olson, MD <52055478+nemo-olmax@users.noreply.github.com>
date: Mon Aug 12 06:47:24 PDT 2019

Add files via upload

--- /dev/null
+++ b/db/tmp.go
@@ -1,0 +1,142 @@
+package db
+
+import (
+	"errors"
+	"log"
+)
+type Access uint8
+
+const (
+	GuestAuth Access = 1 << iota
+	PatientAuth
+	DoctorAuth
+)
+
+type entry struct {
+	first string
+	last  string
+	email string
+	pass  string
+	role  Access
+}
+
+// NOTE: stubs for database calls.
+var tmpdata map[string]*entry
+var data map[string]*entry
+
+func init() {
+	tmpdata = make(map[string]*entry)
+	data = make(map[string]*entry)
+	// NOTE: Dummy entry for testing. This goes away when we have a real db
+	data["foo"] = &entry {
+		first: "foo",
+		last:  "bar",
+		email: "foo@bar.com",
+		pass:  "1234567890",
+		role:  PatientAuth,
+	}
+}
+
+// Placeholder code for database lookups
+func CreateTempEntry(first, last, email, pass, token string) {
+	tmpdata[token] = &entry{
+		first: first,
+		last:  last,
+		email: email,
+		pass:  pass,
+	}
+}
+
+func RemoveTempEntry(token string) {
+	delete(tmpdata, token)
+}
+
+func FindTempEntry(token string) bool {
+	if _, ok := tmpdata[token]; ok {
+		return true
+	}
+	return false
+}
+
+func CreateEntry(token string) {
+	log.Println(data)
+	if ent, ok := tmpdata[token]; ok {
+		data[token] = &entry {
+			first: ent.first,
+			last:  ent.last,
+			email: ent.email,
+			pass:  ent.pass,
+			role:  PatientAuth,
+		}
+		delete(tmpdata, token)
+	}
+}
+
+type User struct {
+	First string
+	Last  string
+	Email string
+}
+
+// Dummy function of all dummy functions, this will eventually call cookie functions to maintain forward secrecy
+func FromCookie(token string) (*User, error) {
+	if u, ok := data[token]; ok {
+		return &User{
+			First: u.first,
+			Last:  u.last,
+			Email: u.email,
+		}, nil
+	}
+	return nil, errors.New("No such user")
+}
+
+func UpdateToken(old, new string) bool {
+	defer delete(data, old)
+	if ent, ok := data[old]; ok {
+		data[new] = ent
+		return true
+	}
+	return false
+}
+
+func FindEntry(token string) bool {
+	if _, ok := data[token]; ok {
+		return true
+	}
+	return false
+}
+
+func ValidateLogin(username, password string) bool {
+	for _, client := range data {
+		if client.email == username && client.pass == password {
+			return true
+		}
+	}
+	return false
+}
+
+func UserRole(username string) Access {
+	for _, client := range data {
+		if client.email != username {
+			continue
+		}
+		return client.role
+	}
+	return GuestAuth
+}
+
+func UserExists(email string) bool {
+	for _, client := range data {
+		if client.email == email {
+			return true
+		}
+	}
+	return false
+}
+
+func UpdateUserPassword(token, pass string) {
+	if _, ok := data[token]; ! ok {
+		return
+	}
+	data[token].pass = pass
+}