mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-28 19:11:57 +08:00
NET-152 enrollment keys for non admins (#2346)
* return 401 instead of 403 * fixed http.StatusForbidden * Tagged build version (temp) * Unauthorized_Err when applicable * untagged version * fixed PUT /api/users/networks/user1 * - expired token redirs to login - added `/api/enrollment_keys` for non-admins - unit test for enrollment keys for non-admins * handle user perms in `/hosts` * removed debug * misc * - support masteradmin - return hosts with partial access * added `ismaster` to middleware
This commit is contained in:
@@ -204,3 +204,77 @@ func TestDeTokenize_EnrollmentKeys(t *testing.T) {
|
||||
|
||||
removeAllEnrollments()
|
||||
}
|
||||
|
||||
func TestHasNetworksAccess(t *testing.T) {
|
||||
type Case struct {
|
||||
// network names
|
||||
n []string
|
||||
u models.User
|
||||
}
|
||||
pass := []Case{
|
||||
{
|
||||
n: []string{"n1", "n2"},
|
||||
u: models.User{
|
||||
Networks: []string{"n1", "n2"},
|
||||
IsAdmin: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
n: []string{"n1", "n2"},
|
||||
u: models.User{
|
||||
Networks: []string{},
|
||||
IsAdmin: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
n: []string{"n1", "n2"},
|
||||
u: models.User{
|
||||
Networks: []string{"n1", "n2", "n3"},
|
||||
IsAdmin: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
n: []string{"n2"},
|
||||
u: models.User{
|
||||
Networks: []string{"n2"},
|
||||
IsAdmin: false,
|
||||
},
|
||||
},
|
||||
}
|
||||
deny := []Case{
|
||||
{
|
||||
n: []string{"n1", "n2"},
|
||||
u: models.User{
|
||||
Networks: []string{"n2"},
|
||||
IsAdmin: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
n: []string{"n1", "n2"},
|
||||
u: models.User{
|
||||
Networks: []string{},
|
||||
IsAdmin: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
n: []string{"n1", "n2"},
|
||||
u: models.User{
|
||||
Networks: []string{"n3"},
|
||||
IsAdmin: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
n: []string{"n2"},
|
||||
u: models.User{
|
||||
Networks: []string{"n1"},
|
||||
IsAdmin: false,
|
||||
},
|
||||
},
|
||||
}
|
||||
for _, tc := range pass {
|
||||
assert.True(t, UserHasNetworksAccess(tc.n, &tc.u))
|
||||
}
|
||||
for _, tc := range deny {
|
||||
assert.False(t, UserHasNetworksAccess(tc.n, &tc.u))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user