提示:如果一个账号是B端账号,且商城客户账户登录是传统的账号密码登录则可适用。
B端访问链接如下:
首先B端用户登录需要商家提供访问此链接,客户邮箱验证后再点回商店进行购物,但在真实场景中,有B端业务的商家让用户这样操作再点回商城是不太合理的。
提供重定向地址
在全局访问liquid数据的文件中添加B端用户信息以供全局js文件进行访问
<script>
window.themeVariables = {
userCompany: {
isB2b: {{ customer.b2b? }},
name: '{{ customer.current_company.name }}',
zip: "{{ customer.current_location.shipping_address.zip }}"
}
...
}
</script>
全局JS代码添加如下
(() => { // 主要校验用户是否是B端用户
if(Cookies.get('logout') == 'true') {
Cookies.remove('logout');
window.location.href = '/account/logout';
}
if(
(!window.themeVariables.userCompany.isB2b && window.themeVariables.userCompany.name) ||
(window.themeVariables.userCompany.isB2b && !window.themeVariables.userCompany.zip)
) {
const parsedUrl = new URL(window.location.href);
const returnTo = parsedUrl.pathname + parsedUrl.search;
window.location.href = `https://shopify.com/11111111111/account/locations?return_to=${returnTo}`;
}
})();
情况1
如果有公司名称但是个人信息不是b2b(B端用户首次登录)则需要跳到B端登录后台去并携带着重定向地址(完整的商店地址https://...)。
情况2
如果是B端用户但是没地址,这种情况是此浏览器已经登录了一个B端账号,但是这个账号退出了,另一个B端账号去在这个浏览器登录,此时商店浏览器cookie还记录着上一个账号的B端信息,这个cookie无法手动清除,前一个账号和这个后登录的B端账号冲突了,所以必须还得跳到B端后台去登录。
全局退出账号方法
if(window.themeVariables.userCompany.isB2b == 'true') {
Cookies.set('logout', 'true');
window.location.href = "https://shopify.com/11111111111/account/logout";
} else {
window.location.href = "/account/logout";
}
退出的话如果是B端用户需要先退出B端后台,记录一下cookie,等B端退出后会重定向回商店然后判断用户是否从B端后台退出Cookies.get('logout') == 'true' 再退出商城账号,这样的话支持一个浏览器多B端用户。