stages/authenticator_sms: Add SMS Authenticator Stage (#1577)
* stages/authenticator_sms: initial implementation Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web/admin: add initial stage UI Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web/elements: clear invalid state when old input was invalid but new input is correct Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * stages/authenticator_sms: add more logic Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web/user: add basic SMS settings Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * stages/authenticator_sms: initial working version Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * stages/authenticator_sms: add tests Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web/flows: optimise totp password manager entry on authenticator_validation stage Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web/elements: add grouping support for table Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web/admin: allow sms class in authenticator stage Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web/admin: add grouping to more pages Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * stages/authenticator_validate: add SMS support Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * api: add throttling for flow executor based on session key and pending user Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web: fix style issues Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * ci: add workflow to compile backend translations Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
@ -219,6 +219,9 @@ export class Form<T> extends LitElement {
|
||||
element.errorMessage =
|
||||
errorMessage[camelToSnake(elementName)].join(", ");
|
||||
element.invalid = true;
|
||||
} else {
|
||||
element.errorMessage = "";
|
||||
element.invalid = false;
|
||||
}
|
||||
});
|
||||
if ("non_field_errors" in errorMessage) {
|
||||
|
||||
@ -15,6 +15,7 @@ import PFBase from "@patternfly/patternfly/patternfly-base.css";
|
||||
|
||||
import { AKResponse } from "../../api/Client";
|
||||
import { EVENT_REFRESH } from "../../constants";
|
||||
import { groupBy } from "../../utils";
|
||||
import "../EmptyState";
|
||||
import "../chips/Chip";
|
||||
import "../chips/ChipGroup";
|
||||
@ -154,6 +155,12 @@ export abstract class Table<T> extends LitElement {
|
||||
});
|
||||
}
|
||||
|
||||
public groupBy(items: T[]): [string, T[]][] {
|
||||
return groupBy(items, () => {
|
||||
return "";
|
||||
});
|
||||
}
|
||||
|
||||
public fetch(): void {
|
||||
if (this.isLoading) {
|
||||
return;
|
||||
@ -213,7 +220,22 @@ export abstract class Table<T> extends LitElement {
|
||||
if (this.data.pagination.count === 0) {
|
||||
return [this.renderEmpty()];
|
||||
}
|
||||
return this.data.results.map((item: T) => {
|
||||
const groupedResults = this.groupBy(this.data.results);
|
||||
if (groupedResults.length === 1) {
|
||||
return this.renderRowGroup(groupedResults[0][1]);
|
||||
}
|
||||
return groupedResults.map(([group, items]) => {
|
||||
return html`<thead>
|
||||
<tr role="row">
|
||||
<th role="columnheader" scope="row" colspan="200">${group}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
${this.renderRowGroup(items)}`;
|
||||
});
|
||||
}
|
||||
|
||||
private renderRowGroup(items: T[]): TemplateResult[] {
|
||||
return items.map((item) => {
|
||||
return html`<tbody
|
||||
role="rowgroup"
|
||||
class="${this.expandedElements.indexOf(item) > -1 ? "pf-m-expanded" : ""}"
|
||||
|
||||
Reference in New Issue
Block a user