1 |
- {"version":3,"sources":["../../../src/app/content/signingin-page/SigningInPage.tsx"],"names":["React","withRouter","Button","DataList","DataListAction","DataListItemCells","DataListCell","DataListItem","DataListItemRow","Stack","StackItem","Title","TitleLevel","DataListActionVisibility","Dropdown","DropdownPosition","KebabToggle","AIACommand","TimeUtil","AccountServiceContext","ContinueCancelModal","Msg","ContentPage","ContentAlert","KeycloakContext","css","SigningInPage","Component","constructor","props","context","credentialId","userLabel","doDelete","then","getCredentialContainers","success","state","credentialContainers","Map","doGet","response","allContainers","containers","data","forEach","container","categoryMap","get","category","set","type","setState","console","log","credElementId","credType","credId","item","substring","render","renderCategories","Array","from","keys","map","h2","renderTypes","credTypeMap","keycloak","index","typeArray","renderCredTypeTitle","renderUserCredentials","renderEmptyRow","length","isLast","credContainer","userCredentials","removeable","displayName","localizedDisplayName","localize","credential","hasOwnProperty","createdDate","strCreatedDate","format","updateAIA","updateAction","id","credentialRowCells","handleRemove","credRowCells","push","setupAction","createAction","credContainerDisplayName","h3","helptext","hiddenOnLg","right","isOpen","open","execute","visibleOnLg","hidden","CredentialAction","credRemover","SigningInPageWithRouter"],"mappings":"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","sourcesContent":["/*\n * Copyright 2018 Red Hat, Inc. and/or its affiliates.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as React from 'react';\n\nimport {withRouter, RouteComponentProps} from 'react-router-dom';\nimport {\n Button,\n DataList,\n DataListAction,\n DataListItemCells,\n DataListCell,\n DataListItem,\n DataListItemRow,\n Stack,\n StackItem,\n Title,\n TitleLevel,\n DataListActionVisibility,\n Dropdown,\n DropdownPosition,\n KebabToggle,\n } from '@patternfly/react-core';\n\nimport {AIACommand} from '../../util/AIACommand';\nimport TimeUtil from '../../util/TimeUtil';\nimport {HttpResponse, AccountServiceClient} from '../../account-service/account.service';\nimport {AccountServiceContext} from '../../account-service/AccountServiceContext';\nimport {ContinueCancelModal} from '../../widgets/ContinueCancelModal';\nimport {Features} from '../../widgets/features';\nimport {Msg} from '../../widgets/Msg';\nimport {ContentPage} from '../ContentPage';\nimport {ContentAlert} from '../ContentAlert';\nimport { KeycloakContext } from '../../keycloak-service/KeycloakContext';\nimport { KeycloakService } from '../../keycloak-service/keycloak.service';\nimport { css } from '@patternfly/react-styles';\n\ndeclare const features: Features;\n\ninterface PasswordDetails {\n registered: boolean;\n lastUpdate: number;\n}\n\ntype CredCategory = 'password' | 'two-factor' | 'passwordless';\ntype CredType = string;\ntype CredTypeMap = Map<CredType, CredentialContainer>;\ntype CredContainerMap = Map<CredCategory, CredTypeMap>;\n\ninterface UserCredential {\n id: string;\n type: string;\n userLabel: string;\n createdDate?: number;\n strCreatedDate?: string;\n}\n\n// A CredentialContainer is unique by combo of credential type and credential category\ninterface CredentialContainer {\n category: CredCategory;\n type: CredType;\n displayName: string;\n helptext?: string;\n createAction?: string;\n updateAction?: string;\n removeable: boolean;\n userCredentials: UserCredential[];\n open: boolean;\n}\n\ninterface SigningInPageProps extends RouteComponentProps {\n}\n\ninterface SigningInPageState {\n // Credential containers organized by category then type\n credentialContainers: CredContainerMap;\n}\n\n/**\n * @author Stan Silvert ssilvert@redhat.com (C) 2018 Red Hat Inc.\n */\nclass SigningInPage extends React.Component<SigningInPageProps, SigningInPageState> {\n static contextType = AccountServiceContext;\n context: React.ContextType<typeof AccountServiceContext>;\n\n public constructor(props: SigningInPageProps, context: React.ContextType<typeof AccountServiceContext>) {\n super(props);\n this.context = context;\n \n this.state = {\n credentialContainers: new Map(),\n }\n\n this.getCredentialContainers();\n }\n\n private getCredentialContainers(): void {\n this.context!.doGet(\"/credentials\")\n .then((response: HttpResponse<CredentialContainer[]>) => {\n\n const allContainers: CredContainerMap = new Map();\n const containers: CredentialContainer[] = response.data || [];\n containers.forEach(container => {\n let categoryMap = allContainers.get(container.category);\n if (!categoryMap) {\n categoryMap = new Map();\n allContainers.set(container.category, categoryMap);\n }\n categoryMap.set(container.type, container);\n });\n\n this.setState({credentialContainers: allContainers});\n console.log({allContainers})\n });\n }\n\n private handleRemove = (credentialId: string, userLabel: string) => {\n this.context!.doDelete(\"/credentials/\" + credentialId)\n .then(() => {\n this.getCredentialContainers();\n ContentAlert.success('successRemovedMessage', [userLabel]);\n });\n }\n\n public static credElementId(credType: CredType, credId: string, item: string): string {\n return `${credType}-${item}-${credId.substring(0,8)}`;\n }\n\n public render(): React.ReactNode {\n return (\n <ContentPage title=\"signingIn\"\n introMessage=\"signingInSubMessage\">\n <Stack gutter='md'>\n {this.renderCategories()}\n </Stack>\n </ContentPage>\n );\n }\n\n private renderCategories(): React.ReactNode {\n return (<> {\n Array.from(this.state.credentialContainers.keys()).map(category => (\n <StackItem key={category} isFilled>\n <Title id={`${category}-categ-title`} headingLevel={TitleLevel.h2} size='2xl'>\n <strong><Msg msgKey={category}/></strong>\n </Title>\n <DataList aria-label='foo'>\n {this.renderTypes(this.state.credentialContainers.get(category)!)}\n </DataList>\n </StackItem>\n ))\n\n }</>)\n }\n\n private renderTypes(credTypeMap: CredTypeMap): React.ReactNode {\n return (\n <KeycloakContext.Consumer> \n { keycloak => (\n <>{\n Array.from(credTypeMap.keys()).map((credType: CredType, index: number, typeArray: string[]) => ([\n this.renderCredTypeTitle(credTypeMap.get(credType)!, keycloak!),\n this.renderUserCredentials(credTypeMap, credType, keycloak!),\n this.renderEmptyRow(credTypeMap.get(credType)!.type, index === typeArray.length - 1)\n ]))\n }</>\n )}\n </KeycloakContext.Consumer>\n );\n }\n\n private renderEmptyRow(type: string, isLast: boolean): React.ReactNode {\n if (isLast) return; // don't put empty row at the end\n\n return (\n <DataListItem aria-labelledby={'empty-list-item-' + type}>\n <DataListItemRow key={'empty-row-' + type}>\n <DataListItemCells dataListCells={[<DataListCell></DataListCell>]}/>\n </DataListItemRow>\n </DataListItem>\n )\n }\n\n private renderUserCredentials(credTypeMap: CredTypeMap, credType: CredType, keycloak: KeycloakService): React.ReactNode {\n const credContainer: CredentialContainer = credTypeMap.get(credType)!;\n const userCredentials: UserCredential[] = credContainer.userCredentials;\n const removeable: boolean = credContainer.removeable;\n const type: string = credContainer.type;\n const displayName: string = credContainer.displayName;\n\n if (!userCredentials || userCredentials.length === 0) {\n const localizedDisplayName = Msg.localize(displayName);\n return (\n <DataListItem key='no-credentials-list-item' aria-labelledby='no-credentials-list-item'>\n <DataListItemRow key='no-credentials-list-item-row'>\n <DataListItemCells\n dataListCells={[\n <DataListCell key={'no-credentials-cell-0'}/>,\n <strong id={`${type}-not-set-up`} key={'no-credentials-cell-1'}><Msg msgKey='notSetUp' params={[localizedDisplayName]}/></strong>,\n <DataListCell key={'no-credentials-cell-2'}/>\n ]}/>\n </DataListItemRow>\n </DataListItem>\n );\n }\n\n userCredentials.forEach(credential => {\n if (!credential.userLabel) credential.userLabel = Msg.localize(credential.type);\n if (credential.hasOwnProperty('createdDate') && credential.createdDate && credential.createdDate! > 0) {\n credential.strCreatedDate = TimeUtil.format(credential.createdDate as number);\n }\n });\n\n let updateAIA: AIACommand;\n if (credContainer.updateAction) {\n updateAIA = new AIACommand(keycloak, credContainer.updateAction);\n }\n\n return (\n <React.Fragment key='userCredentials'> {\n userCredentials.map(credential => (\n <DataListItem id={`${SigningInPage.credElementId(type, credential.id, 'row')}`} key={'credential-list-item-' + credential.id} aria-labelledby={'credential-list-item-' + credential.userLabel}>\n <DataListItemRow key={'userCredentialRow-' + credential.id}>\n <DataListItemCells dataListCells={this.credentialRowCells(credential, type)}/>\n\n <CredentialAction credential={credential}\n removeable={removeable}\n updateAction={updateAIA}\n credRemover={this.handleRemove}/>\n </DataListItemRow>\n </DataListItem>\n ))\n }\n </React.Fragment>)\n }\n\n private credentialRowCells(credential: UserCredential, type: string): React.ReactNode[] {\n const credRowCells: React.ReactNode[] = [];\n credRowCells.push(<DataListCell id={`${SigningInPage.credElementId(type, credential.id, 'label')}`} key={'userLabel-' + credential.id}>{credential.userLabel}</DataListCell>);\n if (credential.strCreatedDate) {\n credRowCells.push(<DataListCell id={`${SigningInPage.credElementId(type, credential.id, 'created-at')}`} key={'created-' + credential.id}><strong><Msg msgKey='credentialCreatedAt'/>: </strong>{credential.strCreatedDate}</DataListCell>);\n credRowCells.push(<DataListCell key={'spacer-' + credential.id}/>);\n }\n\n return credRowCells;\n }\n\n private renderCredTypeTitle(credContainer: CredentialContainer, keycloak: KeycloakService): React.ReactNode {\n if (!credContainer.hasOwnProperty('helptext') && !credContainer.hasOwnProperty('createAction')) return;\n\n let setupAction: AIACommand;\n if (credContainer.createAction) {\n setupAction = new AIACommand(keycloak, credContainer.createAction);\n }\n const credContainerDisplayName: string = Msg.localize(credContainer.displayName);\n\n return (\n <React.Fragment key={'credTypeTitle-' + credContainer.type}>\n <DataListItem aria-labelledby={'type-datalistitem-' + credContainer.type}>\n <DataListItemRow key={'credTitleRow-' + credContainer.type}>\n <DataListItemCells\n dataListCells={[\n <DataListCell width={5} key={'credTypeTitle-' + credContainer.type}>\n <Title headingLevel={TitleLevel.h3} size='2xl'>\n <strong id={`${credContainer.type}-cred-title`}><Msg msgKey={credContainer.displayName}/></strong>\n </Title>\n <span id={`${credContainer.type}-cred-help`}>\n {credContainer.helptext && <Msg msgKey={credContainer.helptext}/>}\n </span>\n </DataListCell>,\n\n ]}/>\n {credContainer.createAction &&\n <DataListAction\n aria-labelledby='create'\n aria-label='create action'\n id={'mob-setUpAction-' + credContainer.type}\n className={DataListActionVisibility.hiddenOnLg}\n >\n <Dropdown\n isPlain\n position={DropdownPosition.right}\n toggle={<KebabToggle onToggle={isOpen => {\n credContainer.open = isOpen;\n this.setState({ credentialContainers: new Map(this.state.credentialContainers) });\n }} />}\n isOpen={credContainer.open}\n dropdownItems={[\n <button id={`mob-${credContainer.type}-set-up`} className=\"pf-c-button pf-m-link\" type=\"button\" onClick={() => setupAction.execute()}>\n <span className=\"pf-c-button__icon\">\n <i className=\"fas fa-plus-circle\" aria-hidden=\"true\"></i>\n </span>\n <Msg msgKey='setUpNew' params={[credContainerDisplayName]} />\n </button>]}\n />\n </DataListAction>}\n {credContainer.createAction &&\n <DataListAction\n aria-labelledby='create'\n aria-label='create action'\n id={'setUpAction-' + credContainer.type}\n className={css(DataListActionVisibility.visibleOnLg, DataListActionVisibility.hidden)}\n >\n <button id={`${credContainer.type}-set-up`} className=\"pf-c-button pf-m-link\" type=\"button\" onClick={()=> setupAction.execute()}>\n <span className=\"pf-c-button__icon\">\n <i className=\"fas fa-plus-circle\" aria-hidden=\"true\"></i>\n </span>\n <Msg msgKey='setUpNew' params={[credContainerDisplayName]}/>\n </button>\n </DataListAction>}\n </DataListItemRow>\n </DataListItem>\n </React.Fragment>\n )\n }\n\n};\n\ntype CredRemover = (credentialId: string, userLabel: string) => void;\ninterface CredentialActionProps {credential: UserCredential;\n removeable: boolean;\n updateAction: AIACommand;\n credRemover: CredRemover;};\nclass CredentialAction extends React.Component<CredentialActionProps> {\n\n render(): React.ReactNode {\n if (this.props.updateAction) {\n return (\n <DataListAction aria-labelledby='foo' aria-label='foo action' id={'updateAction-' + this.props.credential.id}>\n <Button id={`${SigningInPage.credElementId(this.props.credential.type, this.props.credential.id, 'update')}`} variant='primary'onClick={()=> this.props.updateAction.execute()}><Msg msgKey='update'/></Button>\n </DataListAction>\n )\n }\n\n if (this.props.removeable) {\n const userLabel: string = this.props.credential.userLabel;\n return (\n <DataListAction aria-labelledby='foo' aria-label='foo action' id={'removeAction-' + this.props.credential.id }>\n <ContinueCancelModal buttonTitle='remove'\n buttonId={`${SigningInPage.credElementId(this.props.credential.type, this.props.credential.id, 'remove')}`}\n modalTitle={Msg.localize('removeCred', [userLabel])}\n modalMessage={Msg.localize('stopUsingCred', [userLabel])}\n onContinue={() => this.props.credRemover(this.props.credential.id, userLabel)}\n />\n </DataListAction>\n )\n }\n\n return (<></>)\n }\n}\n\nconst SigningInPageWithRouter = withRouter(SigningInPage);\nexport { SigningInPageWithRouter as SigningInPage};"],"file":"SigningInPage.js"}
|