in lib/ic/info_release.go [56:145]
func toInformationReleasePageArgs(id *ga4gh.Identity, stateID, clientName, scope, consentDashboard string) *informationReleasePageArgs {
dashboardURL := strings.ReplaceAll(consentDashboard, "${USER_ID}", id.Subject)
args := &informationReleasePageArgs{
ID: id.Subject,
ApplicationName: clientName,
Scope: scope,
AssetDir: assetPath,
Information: map[string][]*informationItem{},
State: stateID,
ConsentDashboardURL: dashboardURL,
}
for _, s := range strings.Split(scope, " ") {
switch {
case s == "openid":
continue
case s == "offline":
args.Offline = true
case s == "profile":
if len(id.Name) != 0 {
args.Information["Profile"] = append(args.Information["Profile"], &informationItem{
ID: "profile.name",
Title: "Name",
Value: id.Name,
})
}
if len(id.Email) != 0 {
args.Information["Profile"] = append(args.Information["Profile"], &informationItem{
ID: "profile.email",
Title: "Email",
Value: id.Email,
})
}
if len(id.Picture) > 0 || len(id.Locale) > 0 {
args.Information["Profile"] = append(args.Information["Profile"], &informationItem{
ID: "profile.others",
Title: "Others",
Value: "Picture,Locale",
})
}
case s == passportScope || s == ga4ghScope:
for _, v := range id.VisaJWTs {
info, err := visaToInformationItem(v)
if err != nil {
glog.Errorf("convert visa to info failed: %v", err)
continue
}
args.Information["Visas"] = append(args.Information["Visas"], info)
}
case s == "account_admin":
args.Information["Permission"] = append(args.Information["Permission"], &informationItem{
ID: "account_admin",
Title: "account_admin",
Value: "manage (modify) this account",
})
case s == "link":
args.Information["Permission"] = append(args.Information["Permission"], &informationItem{
ID: "link",
Title: "link",
Value: "link this account to other accounts",
})
case s == "identities":
if len(id.Identities) == 0 {
continue
}
var ids []string
for k := range id.Identities {
ids = append(ids, k)
}
args.Information["Profile"] = append(args.Information["Profile"], &informationItem{
ID: "identities",
Title: "Identities",
Value: strings.Join(ids, ","),
})
default:
// Should not reach here, scope has been validated on Hydra.
glog.Errorf("Unknown scope: %s", s)
}
}
return args
}