func deployableApps(u *auth.User, rolesCache map[string]*permission.Role) ([]string, error) { var perms []permission.Permission for _, roleData := range u.Roles { role := rolesCache[roleData.Name] if role == nil { foundRole, err := permission.FindRole(roleData.Name) if err != nil { return nil, err } role = &foundRole rolesCache[roleData.Name] = role } perms = append(perms, role.PermissionsFor(roleData.ContextValue)...) } contexts := permission.ContextsFromListForPermission(perms, permission.PermAppDeploy) if len(contexts) == 0 { return nil, nil } filter := appFilterByContext(contexts, nil) apps, err := app.List(filter) if err != nil { return nil, err } appNames := make([]string, len(apps)) for i := range apps { appNames[i] = apps[i].GetName() } return appNames, nil }
func deployableApps(u *auth.User) ([]string, error) { perms, err := u.Permissions() if err != nil { return nil, err } contexts := permission.ContextsFromListForPermission(perms, permission.PermAppDeploy) if len(contexts) == 0 { return nil, nil } filter := appFilterByContext(contexts, nil) apps, err := app.List(filter) if err != nil { return nil, err } appNames := make([]string, len(apps)) for i := range apps { appNames[i] = apps[i].Name } return appNames, nil }