apim-developer-portal2
Version:
API management developer portal
49 lines (38 loc) • 1.74 kB
text/typescript
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;
}
}