Skip to content
Snippets Groups Projects
Verified Commit 38e5ff42 authored by Ira ¯\_(ツ)_/¯'s avatar Ira ¯\_(ツ)_/¯
Browse files

Update account console customizations

parent 14866ca0
No related branches found
No related tags found
No related merge requests found
Pipeline #5839 failed
......@@ -42,23 +42,15 @@ export class AccountServiceClient {
this.mailPassUrl = this.kcSvc.authServerUrl() + 'realms/' + this.kcSvc.realm() + '/mailpass/roleauth/compute-password-hash';
}
checkToken() {
return this.kcSvc.authenticated();
}
checkRealmRole(role) {
return this.kcSvc.realmRole(role);
}
async doPost2(endpoint, body, config) {
return this.doRequest2(endpoint, { ...config,
async doMailPassPost(endpoint, body, config) {
return this.doMailPassRequest(endpoint, { ...config,
body: JSON.stringify(body),
method: 'post'
});
}
async doRequest2(endpoint, config) {
const response = await fetch(this.makeUrl2(endpoint, config).toString(), (await this.makeConfig(config)));
async doMailPassRequest(endpoint, config) {
const response = await fetch(this.makeMailPassUrl(endpoint, config).toString(), await this.makeConfig(config));
let data = "";
try {
......@@ -74,7 +66,7 @@ export class AccountServiceClient {
return data;
}
makeUrl2(endpoint, config) {
makeMailPassUrl(endpoint, config) {
if (endpoint.startsWith('http')) return new URL(endpoint);
const url = new URL(this.mailPassUrl + endpoint); // add request params
......@@ -113,7 +105,7 @@ export class AccountServiceClient {
}
async doRequest(endpoint, config) {
const response = await fetch(this.makeUrl(endpoint, config).toString(), (await this.makeConfig(config)));
const response = await fetch(this.makeUrl(endpoint, config).toString(), await this.makeConfig(config));
try {
response.data = await response.json();
......
{"version":3,"sources":["../../src/app/account-service/account.service.ts"],"names":["ContentAlert","AccountServiceError","Error","constructor","response","statusText","AccountServiceClient","keycloakService","kcSvc","accountUrl","authServerUrl","realm","mailPassUrl","checkToken","authenticated","checkRealmRole","role","realmRole","doPost2","endpoint","body","config","doRequest2","JSON","stringify","method","fetch","makeUrl2","toString","makeConfig","data","text","e","ok","handleError","startsWith","URL","url","hasOwnProperty","params","Object","keys","forEach","key","searchParams","append","doGet","doRequest","doDelete","doPost","doPut","makeUrl","json","status","login","window","location","href","baseUrl","danger","Promise","resolve","getToken","then","token","headers","Authorization","catch","addEventListener","event","promise","error","preventDefault"],"mappings":"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","sourcesContent":["/*\n * Copyright 2018 Red Hat Inc. and/or its affiliates and other contributors\n * as indicated by the @author tags. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * use this file except in compliance with the License. You may obtain a copy of\n * 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, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */\n\nimport {KeycloakService} from '../keycloak-service/keycloak.service';\nimport {ContentAlert} from '../content/ContentAlert';\n\ndeclare const baseUrl: string;\n\ntype ConfigResolve = (config: RequestInit) => void;\n\nexport interface HttpResponse<T = {}> extends Response {\n data?: T;\n}\n\nexport interface RequestInitWithParams extends RequestInit {\n params?: {[name: string]: string | number};\n}\n\nexport class AccountServiceError extends Error {\n constructor(public response: HttpResponse) {\n super(response.statusText);\n }\n}\n\n/**\n *\n * @author Stan Silvert ssilvert@redhat.com (C) 2018 Red Hat Inc.\n */\nexport class AccountServiceClient {\n private kcSvc: KeycloakService;\n private accountUrl: string;\n private mailPassUrl: string;\n\n public constructor(keycloakService: KeycloakService) {\n this.kcSvc = keycloakService;\n this.accountUrl = this.kcSvc.authServerUrl() + 'realms/' + this.kcSvc.realm() + '/account';\n this.mailPassUrl = this.kcSvc.authServerUrl() + 'realms/' + this.kcSvc.realm() + '/mailpass/roleauth/compute-password-hash';\n };\n\n public checkToken() {\n return this.kcSvc.authenticated();\n }\n\n public checkRealmRole(role:string) {\n return this.kcSvc.realmRole(role);\n }\n\n public async doPost2<T>(endpoint: string,\n body: string | {},\n config?: RequestInitWithParams): Promise<string> {\n return this.doRequest2(endpoint, {...config, body: JSON.stringify(body), method: 'post'});\n }\n\n public async doRequest2<T>(endpoint: string,\n config?: RequestInitWithParams): Promise<string> {\n\n const response: HttpResponse<T> = await fetch(this.makeUrl2(endpoint, config).toString(),\n await this.makeConfig(config));\n\n let data = \"\";\n try {\n data = await response.text();\n } catch (e) {} // ignore. Might be empty\n\n if (!response.ok) {\n this.handleError(response);\n throw new AccountServiceError(response);\n }\n\n return data;\n }\n\n private makeUrl2(endpoint: string, config?: RequestInitWithParams): URL {\n if (endpoint.startsWith('http')) return new URL(endpoint);\n const url = new URL(this.mailPassUrl + endpoint);\n\n // add request params\n if (config && config.hasOwnProperty('params')) {\n const params: {[name: string]: string} = config.params as {} || {};\n Object.keys(params).forEach(key => url.searchParams.append(key, params[key]))\n }\n\n return url;\n }\n\n\n public async doGet<T>(endpoint: string,\n config?: RequestInitWithParams): Promise<HttpResponse<T>> {\n return this.doRequest(endpoint, {...config, method: 'get'});\n }\n\n public async doDelete<T>(endpoint: string,\n config?: RequestInitWithParams): Promise<HttpResponse<T>> {\n return this.doRequest(endpoint, {...config, method: 'delete'});\n }\n\n public async doPost<T>(endpoint: string,\n body: string | {},\n config?: RequestInitWithParams): Promise<HttpResponse<T>> {\n return this.doRequest(endpoint, {...config, body: JSON.stringify(body), method: 'post'});\n }\n\n public async doPut<T>(endpoint: string,\n body: string | {},\n config?: RequestInitWithParams): Promise<HttpResponse<T>> {\n return this.doRequest(endpoint, {...config, body: JSON.stringify(body), method: 'put'});\n }\n\n public async doRequest<T>(endpoint: string,\n config?: RequestInitWithParams): Promise<HttpResponse<T>> {\n\n const response: HttpResponse<T> = await fetch(this.makeUrl(endpoint, config).toString(),\n await this.makeConfig(config));\n\n try {\n response.data = await response.json();\n } catch (e) {} // ignore. Might be empty\n\n if (!response.ok) {\n this.handleError(response);\n throw new AccountServiceError(response);\n }\n\n return response;\n }\n\n private handleError(response: HttpResponse): void {\n if (response !== null && response.status === 401) {\n // session timed out?\n this.kcSvc.login();\n }\n\n if (response !== null && response.status === 403) {\n window.location.href = baseUrl + '/#/forbidden';\n }\n\n if (response !== null && response.data != null) {\n ContentAlert.danger(\n `${response.statusText}: ${response.data['errorMessage'] ? response.data['errorMessage'] : ''} ${response.data['error'] ? response.data['error'] : ''}`\n );\n } else {\n ContentAlert.danger(response.statusText);\n }\n }\n\n private makeUrl(endpoint: string, config?: RequestInitWithParams): URL {\n if (endpoint.startsWith('http')) return new URL(endpoint);\n const url = new URL(this.accountUrl + endpoint);\n\n // add request params\n if (config && config.hasOwnProperty('params')) {\n const params: {[name: string]: string} = config.params as {} || {};\n Object.keys(params).forEach(key => url.searchParams.append(key, params[key]))\n }\n\n return url;\n }\n\n private makeConfig(config: RequestInit = {}): Promise<RequestInit> {\n return new Promise( (resolve: ConfigResolve) => {\n this.kcSvc.getToken()\n .then( (token: string) => {\n resolve( {\n ...config,\n headers: {'Content-Type': 'application/json',\n ...config.headers,\n Authorization: 'Bearer ' + token}\n });\n }).catch(() => {\n this.kcSvc.login();\n });\n });\n }\n\n}\n\nwindow.addEventListener(\"unhandledrejection\", (event: PromiseRejectionEvent) => {\n event.promise.catch(error => {\n if (error instanceof AccountServiceError) {\n // We already handled the error. Ignore unhandled rejection.\n event.preventDefault();\n }\n });\n});\n"],"file":"account.service.js"}
\ No newline at end of file
{"version":3,"sources":["../../src/app/account-service/account.service.ts"],"names":["ContentAlert","AccountServiceError","Error","constructor","response","statusText","AccountServiceClient","keycloakService","kcSvc","accountUrl","authServerUrl","realm","mailPassUrl","doMailPassPost","endpoint","body","config","doMailPassRequest","JSON","stringify","method","fetch","makeMailPassUrl","toString","makeConfig","data","text","e","ok","handleError","startsWith","URL","url","hasOwnProperty","params","Object","keys","forEach","key","searchParams","append","doGet","doRequest","doDelete","doPost","doPut","makeUrl","json","status","login","window","location","href","baseUrl","danger","Promise","resolve","getToken","then","token","headers","Authorization","catch","addEventListener","event","promise","error","preventDefault"],"mappings":"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","sourcesContent":["/*\n * Copyright 2018 Red Hat Inc. and/or its affiliates and other contributors\n * as indicated by the @author tags. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * use this file except in compliance with the License. You may obtain a copy of\n * 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, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */\n\nimport {KeycloakService} from '../keycloak-service/keycloak.service';\nimport {ContentAlert} from '../content/ContentAlert';\n\ndeclare const baseUrl: string;\n\ntype ConfigResolve = (config: RequestInit) => void;\n\nexport interface HttpResponse<T = {}> extends Response {\n data?: T;\n}\n\nexport interface RequestInitWithParams extends RequestInit {\n params?: {[name: string]: string | number};\n}\n\nexport class AccountServiceError extends Error {\n constructor(public response: HttpResponse) {\n super(response.statusText);\n }\n}\n\n/**\n *\n * @author Stan Silvert ssilvert@redhat.com (C) 2018 Red Hat Inc.\n */\nexport class AccountServiceClient {\n private kcSvc: KeycloakService;\n private accountUrl: string;\n private mailPassUrl: string;\n\n public constructor(keycloakService: KeycloakService) {\n this.kcSvc = keycloakService;\n this.accountUrl = this.kcSvc.authServerUrl() + 'realms/' + this.kcSvc.realm() + '/account';\n this.mailPassUrl = this.kcSvc.authServerUrl() + 'realms/' + this.kcSvc.realm() + '/mailpass/roleauth/compute-password-hash';\n };\n\n public async doMailPassPost(endpoint: string,\n body: string | {},\n config?: RequestInitWithParams): Promise<string> {\n return this.doMailPassRequest(endpoint, {...config, body: JSON.stringify(body), method: 'post'});\n }\n\n public async doMailPassRequest(endpoint: string,\n config?: RequestInitWithParams): Promise<string> {\n\n const response: HttpResponse<string> = await fetch(this.makeMailPassUrl(endpoint, config).toString(),\n await this.makeConfig(config));\n\n let data = \"\";\n try {\n data = await response.text();\n } catch (e) {} // ignore. Might be empty\n\n if (!response.ok) {\n this.handleError(response);\n throw new AccountServiceError(response);\n }\n\n return data;\n }\n\n private makeMailPassUrl(endpoint: string, config?: RequestInitWithParams): URL {\n if (endpoint.startsWith('http')) return new URL(endpoint);\n const url = new URL(this.mailPassUrl + endpoint);\n\n // add request params\n if (config && config.hasOwnProperty('params')) {\n const params: {[name: string]: string} = config.params as {} || {};\n Object.keys(params).forEach(key => url.searchParams.append(key, params[key]))\n }\n\n return url;\n }\n\n\n public async doGet<T>(endpoint: string,\n config?: RequestInitWithParams): Promise<HttpResponse<T>> {\n return this.doRequest(endpoint, {...config, method: 'get'});\n }\n\n public async doDelete<T>(endpoint: string,\n config?: RequestInitWithParams): Promise<HttpResponse<T>> {\n return this.doRequest(endpoint, {...config, method: 'delete'});\n }\n\n public async doPost<T>(endpoint: string,\n body: string | {},\n config?: RequestInitWithParams): Promise<HttpResponse<T>> {\n return this.doRequest(endpoint, {...config, body: JSON.stringify(body), method: 'post'});\n }\n\n public async doPut<T>(endpoint: string,\n body: string | {},\n config?: RequestInitWithParams): Promise<HttpResponse<T>> {\n return this.doRequest(endpoint, {...config, body: JSON.stringify(body), method: 'put'});\n }\n\n public async doRequest<T>(endpoint: string,\n config?: RequestInitWithParams): Promise<HttpResponse<T>> {\n\n const response: HttpResponse<T> = await fetch(this.makeUrl(endpoint, config).toString(),\n await this.makeConfig(config));\n\n try {\n response.data = await response.json();\n } catch (e) {} // ignore. Might be empty\n\n if (!response.ok) {\n this.handleError(response);\n throw new AccountServiceError(response);\n }\n\n return response;\n }\n\n private handleError(response: HttpResponse): void {\n if (response !== null && response.status === 401) {\n // session timed out?\n this.kcSvc.login();\n }\n\n if (response !== null && response.status === 403) {\n window.location.href = baseUrl + '/#/forbidden';\n }\n\n if (response !== null && response.data != null) {\n ContentAlert.danger(\n `${response.statusText}: ${response.data['errorMessage'] ? response.data['errorMessage'] : ''} ${response.data['error'] ? response.data['error'] : ''}`\n );\n } else {\n ContentAlert.danger(response.statusText);\n }\n }\n\n private makeUrl(endpoint: string, config?: RequestInitWithParams): URL {\n if (endpoint.startsWith('http')) return new URL(endpoint);\n const url = new URL(this.accountUrl + endpoint);\n\n // add request params\n if (config && config.hasOwnProperty('params')) {\n const params: {[name: string]: string} = config.params as {} || {};\n Object.keys(params).forEach(key => url.searchParams.append(key, params[key]))\n }\n\n return url;\n }\n\n private makeConfig(config: RequestInit = {}): Promise<RequestInit> {\n return new Promise( (resolve: ConfigResolve) => {\n this.kcSvc.getToken()\n .then( (token: string) => {\n resolve( {\n ...config,\n headers: {'Content-Type': 'application/json',\n ...config.headers,\n Authorization: 'Bearer ' + token}\n });\n }).catch(() => {\n this.kcSvc.login();\n });\n });\n }\n\n}\n\nwindow.addEventListener(\"unhandledrejection\", (event: PromiseRejectionEvent) => {\n event.promise.catch(error => {\n if (error instanceof AccountServiceError) {\n // We already handled the error. Ignore unhandled rejection.\n event.preventDefault();\n }\n });\n});\n"],"file":"account.service.js"}
\ No newline at end of file
......@@ -166,13 +166,13 @@ export class AccountPage extends React.Component {
let data = {
password: value
};
let response = await this.context.doPost2("/", data);
let response = await this.context.doMailPassPost("/", data);
return response;
}
showMailPassField() {
let awesome = keycloak.tokenParsed?.realm_access?.roles.includes("staff") || false;
return awesome;
let show = keycloak.tokenParsed?.realm_access?.roles.includes("staff") || false;
return show;
}
render() {
......
{"version":3,"sources":["../../../src/app/content/account-page/AccountPage.tsx"],"names":["React","ActionGroup","Button","Form","FormGroup","TextInput","Grid","GridItem","Expandable","AccountServiceContext","Msg","ContentPage","ContentAlert","LocaleSelector","KeycloakContext","AIACommand","AccountPage","Component","constructor","props","context","features","isRegistrationEmailAsUsername","isEditUserNameAllowed","deleteAccountAllowed","errors","username","firstName","lastName","email","formFields","attributes","DEFAULT_STATE","fetchPersonalInfo","value","event","target","currentTarget","name","setState","state","validationMessage","preventDefault","form","isValid","checkValidity","mailPass","mailPassword","getHash","then","res","reqData","doPost","success","locale","window","location","reload","formData","FormData","validationMessages","Array","from","keys","reduce","acc","key","elements","keycloak","execute","handleChange","doGet","response","data","password","doPost2","showMailPassField","awesome","tokenParsed","realm_access","roles","includes","render","fields","handleSubmit","localize","isInternationalizationEnabled","Object","values","filter","e","length","handleCancel","isDeleteAccountAllowed","marginTop","handleDelete"],"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 */\nimport * as React from 'react';\nimport { ActionGroup, Button, Form, FormGroup, TextInput, Grid, GridItem, Expandable } from '@patternfly/react-core';\n\nimport { HttpResponse } from '../../account-service/account.service';\nimport { AccountServiceContext } from '../../account-service/AccountServiceContext';\nimport { Features } from '../../widgets/features';\nimport { Msg } from '../../widgets/Msg';\nimport { ContentPage } from '../ContentPage';\nimport { ContentAlert } from '../ContentAlert';\nimport { LocaleSelector } from '../../widgets/LocaleSelectors';\nimport { KeycloakContext } from '../../keycloak-service/KeycloakContext';\nimport { KeycloakClient, KeycloakService } from '../../keycloak-service/keycloak.service';\nimport { AIACommand } from '../../util/AIACommand';\n\ndeclare const features: Features;\ndeclare const locale: string;\ndeclare const keycloak: KeycloakClient;\n\n\ninterface AccountPageProps {\n}\n\ninterface FormFields {\n readonly username?: string;\n readonly firstName?: string;\n readonly lastName?: string;\n readonly email?: string;\n attributes?: { locale?: [string], mailPassword?: string };\n}\n\ninterface AccountPageState {\n readonly errors: FormFields;\n readonly formFields: FormFields;\n}\n\n/**\n * @author Stan Silvert ssilvert@redhat.com (C) 2018 Red Hat Inc.\n */\nexport class AccountPage extends React.Component<AccountPageProps, AccountPageState> {\n static contextType = AccountServiceContext;\n context: React.ContextType<typeof AccountServiceContext>;\n private isRegistrationEmailAsUsername: boolean = features.isRegistrationEmailAsUsername;\n private isEditUserNameAllowed: boolean = features.isEditUserNameAllowed;\n private isDeleteAccountAllowed: boolean = features.deleteAccountAllowed;\n private readonly DEFAULT_STATE: AccountPageState = {\n errors: {\n username: '',\n firstName: '',\n lastName: '',\n email: ''\n },\n formFields: {\n username: '',\n firstName: '',\n lastName: '',\n email: '',\n attributes: {}\n }\n };\n\n public state: AccountPageState = this.DEFAULT_STATE;\n\n public constructor(props: AccountPageProps, context: React.ContextType<typeof AccountServiceContext>) {\n super(props);\n this.context = context;\n\n this.fetchPersonalInfo();\n }\n\n private fetchPersonalInfo(): void {\n this.context!.doGet<FormFields>(\"/\")\n .then((response: HttpResponse<FormFields>) => {\n this.setState(this.DEFAULT_STATE);\n const formFields = response.data;\n if (!formFields!.attributes) {\n formFields!.attributes = { locale: [locale] };\n }\n else if (!formFields!.attributes.locale) {\n formFields!.attributes.locale = [locale];\n }\n\n this.setState({ ...{ formFields: formFields as FormFields } });\n });\n }\n\n private handleCancel = (): void => {\n this.fetchPersonalInfo();\n }\n\n private handleChange = (value: string, event: React.FormEvent<HTMLInputElement>) => {\n const target = event.currentTarget;\n const name = target.name;\n\n this.setState({\n errors: { ...this.state.errors, [name]: target.validationMessage },\n formFields: { ...this.state.formFields, [name]: value }\n });\n }\n\n private async getHash(value: string) {\n let data = { password: value };\n let response = await this.context!.doPost2<void>(\"/\", data);\n return response;\n }\n\n private showMailPassField():boolean {\n let awesome = keycloak.tokenParsed?.realm_access?.roles.includes(\"staff\") || false\n return awesome;\n }\n\n private handleSubmit = (event: React.FormEvent<HTMLFormElement>): void => {\n event.preventDefault();\n const form = event.target as HTMLFormElement;\n const isValid = form.checkValidity();\n if (isValid) {\n\n let mailPass = this.state.formFields.attributes!.mailPassword!\n this.getHash(mailPass).then(res => {\n this.setState({\n errors: this.state.errors,\n formFields: { ...this.state.formFields, attributes: { ...this.state.formFields.attributes, mailPassword: res } }\n });\n\n const reqData: FormFields = { ...this.state.formFields };\n this.context!.doPost<void>(\"/\", reqData)\n .then(() => {\n ContentAlert.success('accountUpdatedMessage');\n if (locale !== this.state.formFields.attributes!.locale![0]) {\n window.location.reload();\n }\n\n })\n });\n\n } else {\n const formData = new FormData(form);\n const validationMessages = Array.from(formData.keys()).reduce((acc, key) => {\n acc[key] = form.elements[key].validationMessage\n return acc\n }, {});\n this.setState({\n errors: { ...validationMessages },\n formFields: this.state.formFields\n });\n }\n\n }\n\n private handleDelete = (keycloak: KeycloakService): void => {\n new AIACommand(keycloak, \"delete_account\").execute();\n }\n\n public render(): React.ReactNode {\n const fields: FormFields = this.state.formFields;\n return (\n <ContentPage title=\"personalInfoHtmlTitle\"\n introMessage={this.showMailPassField() ? \"personalSubMessageAuth\" : \"personalSubMessage\"}>\n <Form isHorizontal onSubmit={event => this.handleSubmit(event)}>\n {!this.isRegistrationEmailAsUsername &&\n <FormGroup\n label={Msg.localize('username')}\n isRequired\n fieldId=\"user-name\"\n helperTextInvalid={this.state.errors.username}\n isValid={this.state.errors.username === ''}\n >\n {this.isEditUserNameAllowed && <this.UsernameInput />}\n {!this.isEditUserNameAllowed && <this.RestrictedUsernameInput />}\n </FormGroup>\n }\n <FormGroup\n label={Msg.localize('email')}\n isRequired\n fieldId=\"email-address\"\n helperTextInvalid={this.state.errors.email}\n isValid={this.state.errors.email === ''}\n >\n <TextInput\n isRequired\n type=\"email\"\n id=\"email-address\"\n name=\"email\"\n maxLength={254}\n value={fields.email}\n onChange={this.handleChange}\n isValid={this.state.errors.email === ''}\n >\n </TextInput>\n </FormGroup>\n <FormGroup\n label={Msg.localize('firstName')}\n isRequired\n fieldId=\"first-name\"\n helperTextInvalid={this.state.errors.firstName}\n isValid={this.state.errors.firstName === ''}\n >\n <TextInput\n isRequired\n type=\"text\"\n id=\"first-name\"\n name=\"firstName\"\n maxLength={254}\n value={fields.firstName}\n onChange={this.handleChange}\n isValid={this.state.errors.firstName === ''}\n >\n </TextInput>\n </FormGroup>\n <FormGroup\n label={Msg.localize('lastName')}\n isRequired\n fieldId=\"last-name\"\n helperTextInvalid={this.state.errors.lastName}\n isValid={this.state.errors.lastName === ''}\n >\n <TextInput\n isRequired\n type=\"text\"\n id=\"last-name\"\n name=\"lastName\"\n maxLength={254}\n value={fields.lastName}\n onChange={this.handleChange}\n isValid={this.state.errors.lastName === ''}\n >\n </TextInput>\n </FormGroup>\n { this.showMailPassField() &&\n <FormGroup\n label={Msg.localize('mailPassword')}\n isRequired\n fieldId=\"mail-password\"\n >\n <TextInput\n isRequired\n type=\"password\"\n id=\"mail-password\"\n name=\"mailPassword\"\n maxLength={32}\n value={fields.attributes!.mailPassword || ''}\n onChange={value => this.setState({\n errors: this.state.errors,\n formFields: { ...this.state.formFields, attributes: { ...this.state.formFields.attributes, mailPassword: value } }\n })}\n >\n </TextInput>\n </FormGroup>}\n {features.isInternationalizationEnabled && <FormGroup\n label={Msg.localize('selectLocale')}\n isRequired\n fieldId=\"locale\"\n >\n <LocaleSelector id=\"locale-selector\"\n value={fields.attributes!.locale || ''}\n onChange={value => this.setState({\n errors: this.state.errors,\n formFields: { ...this.state.formFields, attributes: { ...this.state.formFields.attributes, locale: [value] } }\n })}\n />\n </FormGroup>}\n <ActionGroup>\n <Button\n type=\"submit\"\n id=\"save-btn\"\n variant=\"primary\"\n isDisabled={Object.values(this.state.errors).filter(e => e !== '').length !== 0}\n >\n <Msg msgKey=\"doSave\" />\n </Button>\n <Button\n id=\"cancel-btn\"\n variant=\"secondary\"\n onClick={this.handleCancel}\n >\n <Msg msgKey=\"doCancel\" />\n </Button>\n </ActionGroup>\n </Form>\n\n { this.isDeleteAccountAllowed &&\n <div id=\"delete-account\" style={{ marginTop: \"30px\" }}>\n <Expandable toggleText=\"Delete Account\">\n <Grid gutter={\"sm\"}>\n <GridItem span={6}>\n <p>\n <Msg msgKey=\"deleteAccountWarning\" />\n </p>\n </GridItem>\n <GridItem span={4}>\n <KeycloakContext.Consumer>\n {(keycloak: KeycloakService) => (\n <Button id=\"delete-account-btn\" variant=\"danger\" onClick={() => this.handleDelete(keycloak)} className=\"delete-button\"><Msg msgKey=\"doDelete\" /></Button>\n )}\n </KeycloakContext.Consumer>\n </GridItem>\n <GridItem span={2}>\n </GridItem>\n </Grid>\n\n </Expandable>\n </div>}\n </ContentPage>\n );\n }\n\n private UsernameInput = () => (\n <TextInput\n isRequired\n type=\"text\"\n id=\"user-name\"\n name=\"username\"\n maxLength={254}\n value={this.state.formFields.username}\n onChange={this.handleChange}\n isValid={this.state.errors.username === ''}\n >\n </TextInput>\n );\n\n private RestrictedUsernameInput = () => (\n <TextInput\n isDisabled\n type=\"text\"\n id=\"user-name\"\n name=\"username\"\n value={this.state.formFields.username}\n >\n </TextInput>\n );\n};\n"],"file":"AccountPage.js"}
\ No newline at end of file
{"version":3,"sources":["../../../src/app/content/account-page/AccountPage.tsx"],"names":["React","ActionGroup","Button","Form","FormGroup","TextInput","Grid","GridItem","Expandable","AccountServiceContext","Msg","ContentPage","ContentAlert","LocaleSelector","KeycloakContext","AIACommand","AccountPage","Component","constructor","props","context","features","isRegistrationEmailAsUsername","isEditUserNameAllowed","deleteAccountAllowed","errors","username","firstName","lastName","email","formFields","attributes","DEFAULT_STATE","fetchPersonalInfo","value","event","target","currentTarget","name","setState","state","validationMessage","preventDefault","form","isValid","checkValidity","mailPass","mailPassword","getHash","then","res","reqData","doPost","success","locale","window","location","reload","formData","FormData","validationMessages","Array","from","keys","reduce","acc","key","elements","keycloak","execute","handleChange","doGet","response","data","password","doMailPassPost","showMailPassField","show","tokenParsed","realm_access","roles","includes","render","fields","handleSubmit","localize","isInternationalizationEnabled","Object","values","filter","e","length","handleCancel","isDeleteAccountAllowed","marginTop","handleDelete"],"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 */\nimport * as React from 'react';\nimport { ActionGroup, Button, Form, FormGroup, TextInput, Grid, GridItem, Expandable} from '@patternfly/react-core';\n\nimport { HttpResponse } from '../../account-service/account.service';\nimport { AccountServiceContext } from '../../account-service/AccountServiceContext';\nimport { Features } from '../../widgets/features';\nimport { Msg } from '../../widgets/Msg';\nimport { ContentPage } from '../ContentPage';\nimport { ContentAlert } from '../ContentAlert';\nimport { LocaleSelector } from '../../widgets/LocaleSelectors';\nimport { KeycloakContext } from '../../keycloak-service/KeycloakContext';\nimport { KeycloakClient, KeycloakService } from '../../keycloak-service/keycloak.service';\nimport { AIACommand } from '../../util/AIACommand';\n\ndeclare const features: Features;\ndeclare const locale: string;\ndeclare const keycloak: KeycloakClient;\n\n\ninterface AccountPageProps {\n}\n\ninterface FormFields {\n readonly username?: string;\n readonly firstName?: string;\n readonly lastName?: string;\n readonly email?: string;\n attributes?: { locale?: [string]; mailPassword?: string };\n}\n\ninterface AccountPageState {\n readonly errors: FormFields;\n readonly formFields: FormFields;\n}\n\n/**\n * @author Stan Silvert ssilvert@redhat.com (C) 2018 Red Hat Inc.\n */\nexport class AccountPage extends React.Component<AccountPageProps, AccountPageState> {\n static contextType = AccountServiceContext;\n context: React.ContextType<typeof AccountServiceContext>;\n private isRegistrationEmailAsUsername: boolean = features.isRegistrationEmailAsUsername;\n private isEditUserNameAllowed: boolean = features.isEditUserNameAllowed;\n private isDeleteAccountAllowed: boolean = features.deleteAccountAllowed;\n private readonly DEFAULT_STATE: AccountPageState = {\n errors: {\n username: '',\n firstName: '',\n lastName: '',\n email: ''\n },\n formFields: {\n username: '',\n firstName: '',\n lastName: '',\n email: '',\n attributes: {}\n }\n };\n\n public state: AccountPageState = this.DEFAULT_STATE;\n\n public constructor(props: AccountPageProps, context: React.ContextType<typeof AccountServiceContext>) {\n super(props);\n this.context = context;\n\n this.fetchPersonalInfo();\n }\n\n private fetchPersonalInfo(): void {\n this.context!.doGet<FormFields>(\"/\")\n .then((response: HttpResponse<FormFields>) => {\n this.setState(this.DEFAULT_STATE);\n const formFields = response.data;\n if (!formFields!.attributes) {\n formFields!.attributes = { locale: [locale] };\n }\n else if (!formFields!.attributes.locale) {\n formFields!.attributes.locale = [locale];\n }\n\n this.setState({...{ formFields: formFields as FormFields }});\n });\n }\n\n private handleCancel = (): void => {\n this.fetchPersonalInfo();\n }\n\n private handleChange = (value: string, event: React.FormEvent<HTMLInputElement>) => {\n const target = event.currentTarget;\n const name = target.name;\n\n this.setState({\n errors: { ...this.state.errors, [name]: target.validationMessage },\n formFields: { ...this.state.formFields, [name]: value }\n });\n }\n\n private async getHash(value: string): Promise<string> {\n let data = { password: value };\n let response = await this.context!.doMailPassPost(\"/\", data);\n return response;\n }\n\n private showMailPassField(): boolean {\n let show = keycloak.tokenParsed?.realm_access?.roles.includes(\"staff\") || false\n return show;\n }\n\n private handleSubmit = (event: React.FormEvent<HTMLFormElement>): void => {\n event.preventDefault();\n const form = event.target as HTMLFormElement;\n const isValid = form.checkValidity();\n if (isValid) {\n\n let mailPass = this.state.formFields.attributes!.mailPassword!\n this.getHash(mailPass).then(res => {\n this.setState({\n errors: this.state.errors,\n formFields: { ...this.state.formFields, attributes: { ...this.state.formFields.attributes, mailPassword: res } }\n });\n\n const reqData: FormFields = { ...this.state.formFields };\n this.context!.doPost<void>(\"/\", reqData)\n .then(() => {\n ContentAlert.success('accountUpdatedMessage');\n if (locale !== this.state.formFields.attributes!.locale![0]) {\n window.location.reload();\n }\n\n })\n });\n\n } else {\n const formData = new FormData(form);\n const validationMessages = Array.from(formData.keys()).reduce((acc, key) => {\n acc[key] = form.elements[key].validationMessage\n return acc\n }, {});\n this.setState({\n errors: { ...validationMessages },\n formFields: this.state.formFields\n });\n }\n\n }\n\n private handleDelete = (keycloak: KeycloakService): void => {\n new AIACommand(keycloak, \"delete_account\").execute();\n }\n\n public render(): React.ReactNode {\n const fields: FormFields = this.state.formFields;\n return (\n <ContentPage title=\"personalInfoHtmlTitle\"\n introMessage={this.showMailPassField() ? \"personalSubMessageAuth\" : \"personalSubMessage\"}>\n <Form isHorizontal onSubmit={event => this.handleSubmit(event)}>\n {!this.isRegistrationEmailAsUsername &&\n <FormGroup\n label={Msg.localize('username')}\n isRequired\n fieldId=\"user-name\"\n helperTextInvalid={this.state.errors.username}\n isValid={this.state.errors.username === ''}\n >\n {this.isEditUserNameAllowed && <this.UsernameInput />}\n {!this.isEditUserNameAllowed && <this.RestrictedUsernameInput />}\n </FormGroup>\n }\n <FormGroup\n label={Msg.localize('email')}\n isRequired\n fieldId=\"email-address\"\n helperTextInvalid={this.state.errors.email}\n isValid={this.state.errors.email === ''}\n >\n <TextInput\n isRequired\n type=\"email\"\n id=\"email-address\"\n name=\"email\"\n maxLength={254}\n value={fields.email}\n onChange={this.handleChange}\n isValid={this.state.errors.email === ''}\n >\n </TextInput>\n </FormGroup>\n <FormGroup\n label={Msg.localize('firstName')}\n isRequired\n fieldId=\"first-name\"\n helperTextInvalid={this.state.errors.firstName}\n isValid={this.state.errors.firstName === ''}\n >\n <TextInput\n isRequired\n type=\"text\"\n id=\"first-name\"\n name=\"firstName\"\n maxLength={254}\n value={fields.firstName}\n onChange={this.handleChange}\n isValid={this.state.errors.firstName === ''}\n >\n </TextInput>\n </FormGroup>\n <FormGroup\n label={Msg.localize('lastName')}\n isRequired\n fieldId=\"last-name\"\n helperTextInvalid={this.state.errors.lastName}\n isValid={this.state.errors.lastName === ''}\n >\n <TextInput\n isRequired\n type=\"text\"\n id=\"last-name\"\n name=\"lastName\"\n maxLength={254}\n value={fields.lastName}\n onChange={this.handleChange}\n isValid={this.state.errors.lastName === ''}\n >\n </TextInput>\n </FormGroup>\n { this.showMailPassField() &&\n <FormGroup\n label={Msg.localize('mailPassword')}\n isRequired\n fieldId=\"mail-password\"\n >\n <TextInput\n isRequired\n type=\"password\"\n id=\"mail-password\"\n name=\"mailPassword\"\n maxLength={32}\n value={fields.attributes!.mailPassword || ''}\n onChange={value => this.setState({\n errors: this.state.errors,\n formFields: { ...this.state.formFields, attributes: { ...this.state.formFields.attributes, mailPassword: value } }\n })}\n >\n </TextInput>\n </FormGroup>}\n {features.isInternationalizationEnabled && <FormGroup\n label={Msg.localize('selectLocale')}\n isRequired\n fieldId=\"locale\"\n >\n <LocaleSelector id=\"locale-selector\"\n value={fields.attributes!.locale || ''}\n onChange={value => this.setState({\n errors: this.state.errors,\n formFields: { ...this.state.formFields, attributes: { ...this.state.formFields.attributes, locale: [value] } }\n })}\n />\n </FormGroup>}\n <ActionGroup>\n <Button\n type=\"submit\"\n id=\"save-btn\"\n variant=\"primary\"\n isDisabled={Object.values(this.state.errors).filter(e => e !== '').length !== 0}\n >\n <Msg msgKey=\"doSave\" />\n </Button>\n <Button\n id=\"cancel-btn\"\n variant=\"secondary\"\n onClick={this.handleCancel}\n >\n <Msg msgKey=\"doCancel\" />\n </Button>\n </ActionGroup>\n </Form>\n\n { this.isDeleteAccountAllowed &&\n <div id=\"delete-account\" style={{ marginTop: \"30px\" }}>\n <Expandable toggleText=\"Delete Account\">\n <Grid gutter={\"sm\"}>\n <GridItem span={6}>\n <p>\n <Msg msgKey=\"deleteAccountWarning\" />\n </p>\n </GridItem>\n <GridItem span={4}>\n <KeycloakContext.Consumer>\n {(keycloak: KeycloakService) => (\n <Button id=\"delete-account-btn\" variant=\"danger\" onClick={() => this.handleDelete(keycloak)} className=\"delete-button\"><Msg msgKey=\"doDelete\" /></Button>\n )}\n </KeycloakContext.Consumer>\n </GridItem>\n <GridItem span={2}>\n </GridItem>\n </Grid>\n\n </Expandable>\n </div>}\n </ContentPage>\n );\n }\n\n private UsernameInput = () => (\n <TextInput\n isRequired\n type=\"text\"\n id=\"user-name\"\n name=\"username\"\n maxLength={254}\n value={this.state.formFields.username}\n onChange={this.handleChange}\n isValid={this.state.errors.username === ''}\n >\n </TextInput>\n );\n\n private RestrictedUsernameInput = () => (\n <TextInput\n isDisabled\n type=\"text\"\n id=\"user-name\"\n name=\"username\"\n value={this.state.formFields.username}\n >\n </TextInput>\n );\n};\n"],"file":"AccountPage.js"}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment