Nextcloud 是个不错的网盘系统,开源免费,支持 Windows Ad 域,而且开放了很多接口可以用于二次开发。
最近基于 Nextcloud 做了几个二次开发的功能,下面介绍一下过程。
第一个需求是和公司业务系统对接起来,实现建立项目时自动为项目负责人建立一个同名文件夹和子文件夹。
第二个需求是开放一个页面,可以浏览项目文件夹里的子文件夹、文件等。
第三个需求是可以在开放页面下载列出的文件。
先看第一个需求,我需要做一个接口给业务系统,入参为项目名称的人员唯一信息和项目名称。
Nextcloud 有现成的建立文件夹方法,预想会很顺利。但还是遇到了问题。
由于公司使用的 Windows Ad 域,我是获取不到项目负责人的密码的,所以不能使用项目负责人的帐号去建立文件夹。
然后灵光一闪,我可以使用一个固定的帐号(如:新建个帐户 Administrator)去建立这个文件夹,然后把这个文件夹分享给项目负责人,并分配一定的权限。
但是在找人的步骤又遇到了困难,因为没有表存域帐号。翻来翻去,在 oc_accounts 表里找到了邮箱信息,员工的邮箱基本上都是唯一的,所以可以用这个。
第一个需求方案差不多了,部份(伪)代码如下:
var sql = $"select * from oc_accounts where data like '%\"{email}\"%'"; //查找要分享的用户
oc_accounts[] rst = conn.Query<oc_accounts>(sql).ToArray();
if(l.L