owncloud 具有预先存在的用户数据库

owncloud 具有预先存在的用户数据库

我在数据库中设置了 dovecot 和虚拟用户。现在我想使用相同的用户已经在数据库中。是否可以以某种方式配置 owncloud,以便仅使用我现有数据库中的用户名和密码登录?您是否知道可以做到这一点的教程?(我找不到有关该教程的解释或教程。)

数据库有两列,一列是用户,一列是散列密码(sha512-crypt,采用mysql的正常格式: $6$salt$hash )

答案1

据我所知,您不能直接使用外部用户数据库。但是,应该可以使用在登录尝试中访问用户数据库。

owncloud 表单中的这篇文章展示了如何使用钩子pre_login。它检查 LDAP 组,但这应该很容易适应您的情况。

复制粘贴帖子中的要点:

创建一个函数,在数据库中进行查找,并true在用户有效时返回。

文件<owncloud>/apps/<your_plugin>/appinfo/hooks.php

OC::$CLASSPATH['OC_Templates'] = 'lib/util.php';
class OC_user_ldap_Hooks{

public static function IsUserInGroup($parameters) {
            // replace this with your own database logic
            $filter = "(&(cn=owncloudusers)(memberUid=".$parameters['uid']."))";
           if(!OC_LDAP::searchGroups($filter, 'dn') && $parameters['uid']!="admin")
            {
                    $tmpl = new OC_Template( '', 'error', 'guest' );
                    $tmpl->assign('errors',array(1=>array('error'=>"User <b>".$parameters['uid']."</b> is not a member of a group allowed to login.")));
                    $tmpl->printPage();
                    exit;
            }
            return true;
    }
}

在文件中<owncloud>/apps/<your_plugin>/appinfo/app.php

OC::$CLASSPATH['OC_user_ldap_Hooks'] = 'apps/<your_plugin>/lib/hooks.php';
OCP\Util::connectHook('OC_User', 'pre_login', 'OC_user_ldap_Hooks', 'isUserInGroup')

这只是让您入门的基础知识,您还需要处理更多事情(例如,如果用户第一次登录,则在 ownCloud 中创建新用户)。

相关内容