Skip to content

Commit

Permalink
refactor: simplify {user,krbpolicy,pwpolicy}Utils
Browse files Browse the repository at this point in the history
Added Datetime parser to `ipaObjectUtils.convertApiObj` so that it
can converted attributes defined by `dateValues`.

With this it's no longer needed to use the datetime parsing in
former objectToUser.

This and the fact that there is no usage of `objectToUser` with the second
parameter, allowed to replace `objectToUser` with `partialUserToUser`
and `createEmptyUser` functions that are much imore simpler and reusable.

The same for pw and krb policy objects.

Signed-off-by: Petr Vobornik <pvoborni@redhat.com>
  • Loading branch information
pvoborni committed Jan 25, 2024
1 parent c66cfbe commit 4bb6a6b
Show file tree
Hide file tree
Showing 4 changed files with 140 additions and 200 deletions.
4 changes: 2 additions & 2 deletions src/utils/ipaObjectUtils.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { Metadata, ParamMetadata } from "src/utils/datatypes/globalDataTypes";
import { parseAPIDatetime } from "./utils";

export type BasicType = string | number | boolean | null | undefined | [];

Expand Down Expand Up @@ -179,8 +180,7 @@ export function convertApiObj(
if (simpleValues.has(key)) {
obj[key] = convertToString(value as BasicType);
} else if (dateValues.has(key)) {
// TODO convert to Datetime object
obj[key] = value;
obj[key] = parseAPIDatetime(value);
} else {
obj[key] = value;
}
Expand Down
58 changes: 29 additions & 29 deletions src/utils/krbPolicyUtils.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
import { KrbPolicy } from "./datatypes/globalDataTypes";
// Utils
import { convertApiObj } from "src/utils/ipaObjectUtils";
import { parseAPIDatetime } from "./utils";

const simpleValues = new Set([
"cn",
Expand All @@ -23,34 +22,35 @@ export function apiToKrbPolicy(apiRecord: Record<string, unknown>) {
simpleValues,
dateValues
) as Partial<KrbPolicy>;
return objectToKrbPolicy(converted);
return partialKrbPolicyToKrbPolicy(converted);
}

// Convert an partial KrbPolicy object into a full KrbPolicy object
// (initializing the undefined params with default empty values)
export const objectToKrbPolicy = (
// eslint-disable-next-line @typescript-eslint/no-explicit-any
partialKrbPolicy: any | Partial<KrbPolicy>
) => {
const krbPolicy: KrbPolicy = {
attributelevelrights: partialKrbPolicy.attributelevelrights || {},
cn: partialKrbPolicy.cn || "",
ipacertmapdata: partialKrbPolicy.ipacertmapdata || [],
ipantsecurityidentifier: partialKrbPolicy.ipantsecurityidentifier || "",
ipasshpubkey: partialKrbPolicy.ipasshpubkey || [],
ipauniqueid: partialKrbPolicy.ipauniqueid || "",
krbcanonicalname: partialKrbPolicy.krbcanonicalname || "",
krbmaxrenewableage: partialKrbPolicy.krbmaxrenewableage || "",
krbmaxticketlife: partialKrbPolicy.krbmaxticketlife || "",
krbprincipalexpiration: parseAPIDatetime(
partialKrbPolicy.krbprincipalexpiration
),
krbprincipalname: partialKrbPolicy.krbprincipalname || [],
loginshell: partialKrbPolicy.loginshell || "",
mail: partialKrbPolicy.mail || [],
memberof: partialKrbPolicy.memberof || "",
mepmanagedentry: partialKrbPolicy.mepmanagedentry || "",
usercertificatebinary: partialKrbPolicy.usercertificatebinary || [],
export function partialKrbPolicyToKrbPolicy(
partialKrbPolicy: Partial<KrbPolicy>
) {
return {
...createEmptyKrbPolicy(),
...partialKrbPolicy,
};
return krbPolicy;
};
}

export function createEmptyKrbPolicy(): KrbPolicy {
return {
attributelevelrights: {},
cn: "",
ipacertmapdata: [],
ipantsecurityidentifier: "",
ipasshpubkey: [],
ipauniqueid: "",
krbcanonicalname: "",
krbmaxrenewableage: "",
krbmaxticketlife: "",
krbprincipalexpiration: null,
krbprincipalname: [],
loginshell: "",
mail: [],
memberof: "",
mepmanagedentry: "",
usercertificatebinary: [],
};
}
46 changes: 25 additions & 21 deletions src/utils/pwPolicyUtils.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,27 +23,31 @@ export function apiToPwPolicy(apiRecord: Record<string, unknown>): PwPolicy {
simpleValues,
dateValues
) as Partial<PwPolicy>;
return objectToPwPolicy(converted);
return partialPwPolicyToPwPolicy(converted);
}

// Convert an partial PwPolicy object into a full PwPolicy object
// (initializing the undefined params with default empty values)
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export const objectToPwPolicy = (partialPwPolicy: any | Partial<PwPolicy>) => {
const pwPolicy: PwPolicy = {
attributelevelrights: partialPwPolicy.attributelevelrights || {},
name: partialPwPolicy.cn || partialPwPolicy.name || "",
dn: partialPwPolicy.dn || "",
krbmaxpwdlife: partialPwPolicy.krbmaxpwdlife || "",
krbminpwdlife: partialPwPolicy.krbminpwdlife || "",
krbpwdfailurecountinterval:
partialPwPolicy.krbpwdfailurecountinterval || "",
krbpwdhistorylength: partialPwPolicy.krbpwdhistorylength || "",
krbpwdlockoutduration: partialPwPolicy.krbpwdlockoutduration || "",
krbpwdmaxfailure: partialPwPolicy.krbpwdmaxfailure || "",
krbpwdmindiffchars: partialPwPolicy.krbpwdmindiffchars || "",
krbpwdminlength: partialPwPolicy.krbpwdminlength || "",
passwordgracelimit: partialPwPolicy.passwordgracelimit || "",
export function partialPwPolicyToPwPolicy(
partialPwPolicy: Partial<PwPolicy>
) {
return {
...createEmptyPwPolicy(),
...partialPwPolicy,
};
return pwPolicy;
};
}

export function createEmptyPwPolicy(): PwPolicy {
return {
attributelevelrights: {},
name: "",
dn: "",
krbmaxpwdlife: "",
krbminpwdlife: "",
krbpwdfailurecountinterval: "",
krbpwdhistorylength: "",
krbpwdlockoutduration: "",
krbpwdmaxfailure: "",
krbpwdmindiffchars: "",
krbpwdminlength: "",
passwordgracelimit: "",
};
}
Loading

0 comments on commit 4bb6a6b

Please sign in to comment.