Commit bfbc47d2 authored by Kevin Di Lallo's avatar Kevin Di Lallo
Browse files

persistent sandbox names on login

parent 01ee36d2
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -1111,6 +1111,14 @@ func startSession(provider string, username string, w http.ResponseWriter, r *ht
					return "", false, "", err, http.StatusInternalServerError
				}
			}

			// Create new user & store sandbox name for next use
			if user == nil {
				err = authSvc.userStore.CreateUser(provider, username, "", role, sandboxName)
				if err != nil {
					log.Error("Failed to create user with err: ", err.Error())
				}
			}
		}

		// Create new session
+3 −4
Original line number Diff line number Diff line
@@ -203,16 +203,15 @@ func (pc *Connector) DeleteTable(tableName string) (err error) {

// CreateUser - Create new user
func (pc *Connector) CreateUser(provider string, username string, password string, role string, sboxname string) (err error) {
	// Validate input
	// Default to Local Provider
	if provider == "" {
		provider = ProviderLocal
	}

	// Validate input
	if username == "" {
		return errors.New("Missing username")
	}
	if password == "" {
		return errors.New("Missing password")
	}
	if role == "" {
		role = RoleUser
	} else {
+43 −9
Original line number Diff line number Diff line
@@ -33,26 +33,30 @@ const (
	provider1 = ""
	provider2 = "provider2"
	provider3 = "provider3"
	provider4 = "provider4"

	username0 = ""
	username1 = "user1"
	username2 = "user2"
	username3 = "user3"
	username4 = "user4"

	password0 = ""
	password1 = "123"                                                                                                  //3 chars
	password2 = "gie[rh[iuhberieg"                                                                                     //16 chars
	password3 = "efbiwerbfiwferbirgfbiuqrfgbdrfgjnbqairbqifhrbeqi[frb[rifhb[qirfbq]]]qaef[048FERGerwWRGG]FASF03404924" // 100 chars
	password4 = ""

	role0 = "invalid-role"
	role1 = "user"
	role2 = "user"
	role3 = "admin"
	role1 = RoleUser
	role2 = RoleUser
	role3 = RoleAdmin
	role4 = RoleUser

	sboxname0 = "123456789012345" // more than 11 chars
	sboxname1 = "sbox-1"
	sboxname2 = "sbox-2"
	sboxname3 = "sbox-3"
	sboxname4 = "sbox-4"
)

func TestConnector(t *testing.T) {
@@ -140,10 +144,6 @@ func TestPostgisCreateUser(t *testing.T) {
	if err == nil {
		t.Fatalf("user creation should have failed")
	}
	err = pc.CreateUser(provider1, username1, password0, role1, sboxname1)
	if err == nil {
		t.Fatalf("user creation should have failed")
	}
	err = pc.CreateUser(provider1, username1, password1, role0, sboxname1)
	if err == nil {
		t.Fatalf("user creation should have failed")
@@ -235,9 +235,36 @@ func TestPostgisCreateUser(t *testing.T) {
		t.Fatalf("Wrong user authentication")
	}

	err = pc.CreateUser(provider4, username4, password4, role4, sboxname4)
	if err != nil {
		t.Fatalf("Failed to create asset")
	}
	user, err = pc.GetUser(provider4, username4)
	if err != nil || user == nil {
		t.Fatalf("Failed to get user")
	}
	if user.Provider != provider4 || user.Username != username4 || user.Role != role4 || user.Sboxname != sboxname4 {
		t.Fatalf("Wrong user data")
	}
	if user.Password == password4 {
		t.Fatalf("Password not encrypted")
	}
	valid, err = pc.IsValidUser(provider4, username4)
	if err != nil || !valid {
		t.Fatalf("Failed to validate user")
	}
	valid, err = pc.AuthenticateUser(provider4, username4, password4)
	if err != nil || !valid {
		t.Fatalf("Failed to authenticate user")
	}
	valid, err = pc.AuthenticateUser(provider4, username4, password3)
	if err != nil || valid {
		t.Fatalf("Wrong user authentication")
	}

	// Verify all additions worked
	userMap, err = pc.GetUsers()
	if err != nil || len(userMap) != 3 {
	if err != nil || len(userMap) != 4 {
		t.Fatalf("Error getting all users")
	}
	user, found := userMap[pc.GetUserKey(provider1, username1)]
@@ -261,6 +288,13 @@ func TestPostgisCreateUser(t *testing.T) {
	if user.Provider != provider3 || user.Username != username3 || user.Role != role3 || user.Sboxname != sboxname3 {
		t.Fatalf("Wrong user data")
	}
	user, found = userMap[pc.GetUserKey(provider4, username4)]
	if !found {
		t.Fatalf("User not found")
	}
	if user.Provider != provider4 || user.Username != username4 || user.Role != role4 || user.Sboxname != sboxname4 {
		t.Fatalf("Wrong user data")
	}

	// Remove & validate update
	fmt.Println("Remove user & validate update")
+1 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ GOPKGS=(
    meep-net-char-mgr
    meep-pdu-session-store
    meep-subscriptions
    meep-users
    meep-watchdog
)