传统的大宽表用户设计难以应对多样化登录方式。了解如何通过分离 AuthIdentity 与 User 实体,构建支持邮箱、手机号、社交登录和 SSO 的灵活可扩展认证体系,无需修改表结构。
Multi-Identifier Unified Login & Social Binding: Building a Scalable Authentication System
Traditional 'wide table' user designs struggle with diverse login methods. Learn how separating AuthIdentity from User entities enables flexible, scalable authentication supporting email, mobile, social logins, and SSO without schema migrations.
Synchronizing Recurring Outlook Meetings with EspoCRM
Recurring meetings break standard delta sync logic. Learn how to synchronize Outlook recurring events with EspoCRM using windowed expansion and series rebuild strategies—a production-grade solution for Microsoft Graph API integration.
EspoCRM 与 Outlook 循环会议同步实践:窗口化展开 + 系列重建方案
Outlook 与 Gmail/Google Calendar 的循环会议是集成中的“深水区”。本文介绍 EspoCRM 如何通过“窗口化展开”和“系列重建”策略,解决 Microsoft Graph API 增量同步失效、iCalUId 重复等核心难题,提供生产级工程实践方案。
EspoCRM定制篇自定义Job开发——到期提醒通用模板(批量 + 去重 + 发信)
很多 CRM 需求需要“定时触发”:到期提醒、日报生成、数据同步、数据质量巡检。自定义 Job 是正确姿势。本文以通用“到期提醒”为例实现 JobDataLess 定时任务:依赖注入、批量查询、去重日志、邮件发送。给出调度配置、监控排障与发信要点,适用于同步/巡检/通知类任务。
EspoCRM定制篇Dynamic Logic + BeforeSave Hook ——前后端双保险
只做前端 required 的团队,迟早会被“脏数据”反噬。本文给出前后端双保险方案:Dynamic Logic 负责交互体验(实时提示),BeforeSave Hook 守住所有入口底线(API/导入/脚本无法绕过)。覆盖错误消息策略、测试矩阵与“坏人假设”,避免脏数据进入系统。
EspoCRM定制篇纯配置多对多——不写 SQL,让 rebuild 自动建表
你以为多对多必须建中间表?在 EspoCRM 里,手写 SQL 往往是你自己给自己埋雷。本文演示用纯元数据定义多对多关系:entityDefs 的 links + relationName 驱动 rebuild 自动建表。同时补齐 scopes/clientDefs/layouts,让关系在 UI 可见可配可用
EspoCRM定制篇外部集成——Outlook双向同步实战
外部集成的难点不是“调通 API”,而是“长期稳定运行”。本文以 Outlook/Graph 为例,讲清 OAuth 授权流程、ExternalAccount 存储、增量同步(deltaLink/skipToken)与失败恢复策略。覆盖 token 轮换、错误分类重试、幂等设计与英文日志,让集成长期稳定运行。
EspoCRM定制篇总纲——扩展点选择、模块架构与工程化
EspoCRM 定制的第一课不是“怎么写代码”,而是“怎么写出可升级的代码”。本文给出扩展点金字塔(Formula → Dynamic Logic → Workflow → Hook → Service),帮助选择最小侵入方案。同时梳理模块架构、目录分区、rebuild 纪律、逐文件部署、回滚与配置备份,确保长期可维护。
OIDC "Need Admin Approval" 故障排除与分析
本文详细记录了一次OIDC认证系统中遇到的”Need admin approval”问题。用户在登录时持续收到错误提示,但使用相同令牌的独立工具却能正常工作。经过深入分析,发现问题根源在于OIDC配置中的Authorization Prompt参数设置不当