UNPKG

apim-developer-portal2

Version:

API management developer portal

49 lines (38 loc) 1.74 kB
import { Contract } from "@paperbits/common"; import { IModelBinder } from "@paperbits/common/editing"; import { SigninSocialModel } from "./signinSocialModel"; import { SigninSocialContract } from "./signinSocialContract"; import { BuiltInRoles } from "@paperbits/common/user"; const nodeType = "signin-social"; const oldNodeType = "userSigninSocial"; export class SigninSocialModelBinder implements IModelBinder<SigninSocialModel> { public canHandleModel(model: Object): boolean { return model instanceof SigninSocialModel; } public async contractToModel(contract: SigninSocialContract): Promise<SigninSocialModel> { const model = new SigninSocialModel(); model.roles = contract.roles || [BuiltInRoles.everyone.key]; model.styles = contract.styles || { appearance: "components/button/default" }; model.aadLabel = contract.aadLabel || "Azure Active Directory"; model.aadB2CLabel = contract.aadB2CLabel || "Azure Active Directory B2C"; return model; } public canHandleContract(contract: Contract): boolean { return contract.type === nodeType || contract.type === oldNodeType; } public modelToContract(model: SigninSocialModel): Contract { const roles = model.roles && model.roles.length === 1 && model.roles[0] === BuiltInRoles.everyone.key ? null : model.roles; const contract: SigninSocialContract = { type: nodeType, styles: model.styles, roles: roles, aadLabel: model.aadLabel, aadB2CLabel: model.aadB2CLabel }; return contract; } }