package util import ( "encoding/base64" "net/http" "hacklab.nilfm.cc/felt/models" "hacklab.nilfm.cc/quartzgun/auth" "strings" ) func GetUserFromToken(req *http.Request) string { authHeader := req.Header.Get("Authorization") if strings.HasPrefix(authHeader, "Bearer ") { authToken := strings.Split(authHeader, "Bearer ")[1] data, err := base64.StdEncoding.DecodeString(authToken) if err == nil { parts := strings.Split(string(data), "\n") if len(parts) == 2 { return parts[0] } } } return "" } func GetTablesByUser(user string, udb auth.UserStore) ([]models.TableKey, error) { rawTableData, err := udb.GetData(user, "tables") if err != nil { return []models.TableKey{}, err } // split rawTableData - tableName,passCode;tableName,passCode; tables := strings.Split(rawTableData.(string), ";") self := []models.TableKey{} for _, t := range tables { parts := strings.Split(t, ",") if len(parts) == 2 { self = append(self, models.TableKey{ Name: parts[0], Passcode: parts[1], }) } } return self, nil } func SetTablesForUser(user string, tables []models.TableKey, udb auth.UserStore) error { rawTableData := "" for _, t := range tables { rawTableData += t.Name + "," + t.Passcode + ";" } rawTableData = strings.TrimSuffix(rawTableData, ";") return udb.SetData(user, "tables", rawTableData) }