#216: App and workflow downloads can now be organization-wide controlled
This commit is contained in:
@@ -1727,6 +1727,14 @@ func handleInfo(resp http.ResponseWriter, request *http.Request) {
|
||||
}
|
||||
}
|
||||
|
||||
// FIXME: Remove this dependency by updating users' orgs when org itself is updated
|
||||
org, err := getOrg(ctx, userInfo.ActiveOrg.Id)
|
||||
if err == nil {
|
||||
userInfo.ActiveOrg = *org
|
||||
userInfo.ActiveOrg.Users = []User{}
|
||||
}
|
||||
|
||||
log.Printf("Org: %#v", userInfo.ActiveOrg.Defaults)
|
||||
currentOrg, err := json.Marshal(userInfo.ActiveOrg)
|
||||
if err != nil {
|
||||
currentOrg = []byte("{}")
|
||||
@@ -2604,6 +2612,10 @@ func setOrg(ctx context.Context, org Org, id string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// FIXME: Make this update every user to have the correct org data.
|
||||
//org = fixOrgUser(ctx, &org)
|
||||
//_ = org
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -2711,6 +2723,61 @@ func setEnvironment(ctx context.Context, data *Environment) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func fixOrgUser(ctx context.Context, org *Org) *Org {
|
||||
//found := false
|
||||
//for _, id := range user.Orgs {
|
||||
// if user.ActiveOrg.Id == id {
|
||||
// found = true
|
||||
// break
|
||||
// }
|
||||
//}
|
||||
|
||||
//if !found {
|
||||
// user.Orgs = append(user.Orgs, user.ActiveOrg.Id)
|
||||
//}
|
||||
|
||||
//// Might be vulnerable to timing attacks.
|
||||
//for _, orgId := range user.Orgs {
|
||||
// if len(orgId) == 0 {
|
||||
// continue
|
||||
// }
|
||||
|
||||
// org, err := getOrg(ctx, orgId)
|
||||
// if err != nil {
|
||||
// log.Printf("Error getting org %s", orgId)
|
||||
// continue
|
||||
// }
|
||||
|
||||
// orgIndex := 0
|
||||
// userFound := false
|
||||
// for index, orgUser := range org.Users {
|
||||
// if orgUser.Id == user.Id {
|
||||
// orgIndex = index
|
||||
// userFound = true
|
||||
// break
|
||||
// }
|
||||
// }
|
||||
|
||||
// if userFound {
|
||||
// user.PrivateApps = []WorkflowApp{}
|
||||
// user.Executions = ExecutionInfo{}
|
||||
// user.Limits = UserLimits{}
|
||||
// user.Authentication = []UserAuth{}
|
||||
|
||||
// org.Users[orgIndex] = *user
|
||||
// } else {
|
||||
// org.Users = append(org.Users, *user)
|
||||
// }
|
||||
|
||||
// err = setOrg(ctx, *org, orgId)
|
||||
// if err != nil {
|
||||
// log.Printf("Failed setting org %s", orgId)
|
||||
// }
|
||||
//}
|
||||
|
||||
return org
|
||||
}
|
||||
|
||||
func fixUserOrg(ctx context.Context, user *User) *User {
|
||||
found := false
|
||||
for _, id := range user.Orgs {
|
||||
|
||||
@@ -142,7 +142,7 @@ const App = (message, props) => {
|
||||
<Route exact path="/apps/new" render={props => <AppCreator isLoaded={isLoaded} isLoggedIn={isLoggedIn} globalUrl={globalUrl} {...props} />} />
|
||||
<Route exact path="/apps/edit/:appid" render={props => <AppCreator isLoaded={isLoaded} isLoggedIn={isLoggedIn} globalUrl={globalUrl} {...props} />} />
|
||||
<Route exact path="/schedules/:key" render={props => <EditSchedule globalUrl={globalUrl} {...props} />} />
|
||||
<Route exact path="/workflows" render={props => <Workflows cookies={cookies} removeCookie={removeCookie} isLoaded={isLoaded} isLoggedIn={isLoggedIn} globalUrl={globalUrl} cookies={cookies} {...props} />} />
|
||||
<Route exact path="/workflows" render={props => <Workflows cookies={cookies} removeCookie={removeCookie} isLoaded={isLoaded} isLoggedIn={isLoggedIn} globalUrl={globalUrl} cookies={cookies} userdata={userdata} {...props} />} />
|
||||
<Route exact path="/workflows/:key" render={props => <AngularWorkflow userdata={userdata} globalUrl={globalUrl} isLoaded={isLoaded} isLoggedIn={isLoggedIn} {...props} />} />
|
||||
<Route exact path="/docs/:key" render={props => <Docs isLoaded={isLoaded} globalUrl={globalUrl} {...props} />} />
|
||||
<Route exact path="/docs" render={props => { window.location.pathname = "/docs/about" }} />
|
||||
|
||||
@@ -106,7 +106,7 @@ export const GetParsedPaths = (inputdata, basekey) => {
|
||||
|
||||
|
||||
const Apps = (props) => {
|
||||
const { globalUrl, isLoggedIn, isLoaded } = props;
|
||||
const { globalUrl, isLoggedIn, isLoaded, userdata } = props;
|
||||
|
||||
//const [workflows, setWorkflows] = React.useState([]);
|
||||
const baseRepository = "https://github.com/frikky/shuffle-apps"
|
||||
@@ -1316,7 +1316,7 @@ const Apps = (props) => {
|
||||
style={{backgroundColor: inputColor}}
|
||||
variant="outlined"
|
||||
margin="normal"
|
||||
defaultValue="https://github.com/frikky/shuffle-apps"
|
||||
defaultValue={userdata.active_org.defaults.app_download_repo !== undefined && userdata.active_org.defaults.app_download_repo.length > 0 ? userdata.active_org.defaults.app_download_repo : "https://github.com/frikky/shuffle-apps"}
|
||||
InputProps={{
|
||||
style:{
|
||||
color: "white",
|
||||
@@ -1334,7 +1334,7 @@ const Apps = (props) => {
|
||||
style={{backgroundColor: inputColor}}
|
||||
variant="outlined"
|
||||
margin="normal"
|
||||
value={downloadBranch}
|
||||
defaultValue={userdata.active_org.defaults.app_download_branch !== undefined && userdata.active_org.defaults.app_download_branch.length > 0 ? userdata.active_org.defaults.app_download_branch : downloadBranch}
|
||||
InputProps={{
|
||||
style:{
|
||||
color: "white",
|
||||
|
||||
@@ -44,7 +44,7 @@ const inputColor = "#383B40"
|
||||
const surfaceColor = "#27292D"
|
||||
|
||||
const Workflows = (props) => {
|
||||
const { globalUrl, isLoggedIn, isLoaded, removeCookie, cookies} = props;
|
||||
const { globalUrl, isLoggedIn, isLoaded, removeCookie, cookies, userdata} = props;
|
||||
document.title = "Shuffle - Workflows"
|
||||
|
||||
const alert = useAlert()
|
||||
@@ -1348,7 +1348,7 @@ const Workflows = (props) => {
|
||||
style={{backgroundColor: inputColor}}
|
||||
variant="outlined"
|
||||
margin="normal"
|
||||
value={downloadUrl}
|
||||
defaultValue={userdata.active_org.defaults.workflow_download_repo !== undefined && userdata.active_org.defaults.workflow_download_repo.length > 0 ? userdata.active_org.defaults.workflow_download_repo : downloadUrl}
|
||||
InputProps={{
|
||||
style:{
|
||||
color: "white",
|
||||
@@ -1367,7 +1367,7 @@ const Workflows = (props) => {
|
||||
style={{backgroundColor: inputColor}}
|
||||
variant="outlined"
|
||||
margin="normal"
|
||||
value={downloadBranch}
|
||||
defaultValue={userdata.active_org.defaults.workflow_download_branch !== undefined && userdata.active_org.defaults.workflow_download_branch.length > 0 ? userdata.active_org.defaults.workflow_download_branch : downloadBranch}
|
||||
InputProps={{
|
||||
style:{
|
||||
color: "white",
|
||||
|
||||
Reference in New Issue
Block a user