在我目前的设置中,我正在使用Nuxeo与LDAP和CAS集成。现在我的要求是,对于某些情况,一个用户在登录后上传文档但由于公司更改一段时间后,用户ID可能会为该用户更改,但仍将属于同一租户。因此,在更改用户ID之后,用户也希望看到使用较早用户ID上载的文档。下面给出一个例子。
用户名:
user1@abc.com - >上传了文档名称“User1ABC”
user2@abc.com - >上传了文档名称“User2ABC”
现在由于业务需要,系统中的用户名(域名)可能会发生变化。
user1@abc.com - >成为user1@xyz.com
user2@abc.com - >成为user2@xyz.com
在这种情况下,用户1& user2希望看到在早期用户名(user1@abc.com& user2@abc.com)期间上传的文档。
当此域名更改时,它将适用于该租户下的所有用户。
那么,我们如何通过程序或其他API实现这一目标。
答案 0 :(得分:1)
如果是单次迁移,并且您正在使用VCS存储库(例如Postgres)运行,则可以在acls
表上执行以下请求:
UPDATE acls SET user="user1@xyz.com" WHERE user = "user1@abc.com"
根据您存储用户的位置,您可以通过迭代用户表的Postgres plpg / SQL过程自动执行此操作:
CREATE OR REPLACE FUNCTION migrate_user(from_domain varchar, to_domain varchar)
RETURNS integer
AS $$
DECLARE
u RECORD;
i int;
BEGIN
i := 0;
FOR u IN (SELECT username
FROM user
WHERE username like '%@'+ from_domain) LOOP
UPDATE acls SET "user"=replace(u.username,from_domain,to_domain) WHERE user = u.username;
i := i + 1;
END LOOP;
COMMIT;
# Rebuild the read ACLs optimization
SELECT nx_rebuild_read_acls();
RETURN i;
END;
$$ LANGUAGE plpgsql;
我没有测试该功能(它编译;-)),但这个想法在这里并且应该有效。
之后,重新启动Nuxeo服务器,以便重置所有缓存。