Files
filegator/configuration/auth.html
2022-09-19 21:02:24 +02:00

150 lines
7.3 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
<link rel="stylesheet" href="/css/bootstrap.min.css">
<link rel="stylesheet" href="/css/font-awesome.min.css">
<link rel="stylesheet" href="/css/highlight.dark.css">
<link rel="stylesheet" href="/css/main.css">
</head>
<body>
<header class="navbar navbar-default navbar-fixed-top">
<a class="navbar-brand" href="/">
The title
<small class="hidden-xs hidden-sm">
This is the default subtitle!
</small>
</a>
</header>
<main class="container">
<div class="row">
<section id="content" class="col-sm-12">
<h2 id="default-auth-service">Default Auth service</h2>
<p>By default, users are stored in json file. For some use-cases, this is enough. It also makes this app lightweight since no database is required.</p>
<p>Default handler accepts only file name parameter. This file should be writable by the web server.</p>
<pre><code> 'Filegator\Services\Auth\AuthInterface' =&gt; [
'handler' =&gt; '\Filegator\Services\Auth\Adapters\JsonFile',
'config' =&gt; [
'file' =&gt; __DIR__.'/private/users.json',
],
],
</code></pre>
<h2 id="configuring-auth-service-to-use-database">Configuring Auth service to use database</h2>
<p>You can use mysql database to store your users.</p>
<p>First, create a table <code>users</code> with this sql query:</p>
<pre><code>CREATE TABLE `users` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`username` varchar(255) NOT NULL,
`name` varchar(255) NOT NULL,
`role` varchar(20) NOT NULL,
`permissions` varchar(200) NOT NULL,
`homedir` varchar(2000) NOT NULL,
`password` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `username` (`username`)
) CHARSET=utf8 COLLATE=utf8_bin;</code></pre>
<p>Then, import default users with sql query:</p>
<pre><code>INSERT INTO `users` (`username`, `name`, `role`, `permissions`, `homedir`, `password`)
VALUES
('guest', 'Guest', 'guest', '', '/', ''),
('admin', 'Admin', 'admin', 'read|write|upload|download|batchdownload|zip', '/', '$2y$10$Nu35w4pteLfc7BDCIkDPkecjw8wsH8Y2GMfIewUbXLT7zzW6WOxwq');</code></pre>
<p>At the end, open <code>configuration.php</code> and update AuthInterface handler to reflect your database settings:</p>
<pre><code> 'Filegator\Services\Auth\AuthInterface' =&gt; [
'handler' =&gt; '\Filegator\Services\Auth\Adapters\Database',
'config' =&gt; [
'driver' =&gt; 'mysqli',
'host' =&gt; 'localhost',
'username' =&gt; 'root',
'password' =&gt; 'password',
'database' =&gt; 'filegator',
],
],</code></pre>
<h2 id="configuring-auth-service-to-use-wordpress">Configuring Auth service to use WordPress</h2>
<p>Replace your current Auth handler in <code>configuration.php</code> file like this:</p>
<pre><code> 'Filegator\Services\Auth\AuthInterface' =&gt; [
'handler' =&gt; '\Filegator\Services\Auth\Adapters\WPAuth',
'config' =&gt; [
'wp_dir' =&gt; '/var/www/my_wordpress_site/',
'permissions' =&gt; ['read', 'write', 'upload', 'download', 'batchdownload', 'zip'],
'private_repos' =&gt; false,
],
],</code></pre>
<p>Adjust in the config above:</p>
<ul>
<li><code>wp_dir</code> should be the directory path of your wordpress installation</li>
<li><code>permissions</code> is the array of permissions given to each user</li>
<li><code>private_repos</code> each user will have its own sub folder, admin will see everything (false/true)</li>
</ul>
<p>Note: With more recent versions of FileGator you can set <code>guest_redirection</code> in your <code>configuration.php</code> to redirect logged-out users back to your WP site:</p>
<pre><code>'frontend_config' =&gt; [
...
'guest_redirection' =&gt; 'http://example.com/wp-admin/',
...
]</code></pre>
<h2 id="configuring-auth-service-to-use-ldap">Configuring Auth service to use LDAP</h2>
<p>Replace your current Auth handler in <code>configuration.php</code> file like this:</p>
<pre><code> 'Filegator\Services\Auth\AuthInterface' =&gt; [
'handler' =&gt; '\Filegator\Services\Auth\Adapters\LDAP',
'config' =&gt; [
'private_repos' =&gt; false,
'ldap_server'=&gt;'ldap://192.168.1.1',
'ldap_bindDN'=&gt;'uid=ldapbinduser,cn=users,dc=ldap,dc=example,dc=com',
'ldap_bindPass'=&gt;'ldapbinduser-password',
'ldap_baseDN'=&gt;'cn=users,dc=ldap,dc=example,dc=com',
'ldap_filter'=&gt;'(uid=*)', //ex: 'ldap_filter'=&gt;'(&amp;(uid=*)(memberOf=cn=administrators,cn=groups,dc=ldap,dc=example,dc=com))',
'ldap_attributes' =&gt; ["uid","cn","dn"],
'ldap_userFieldMapping'=&gt; [
'username' =&gt;'uid',
'username_AddDomain' =&gt;'@example.com',
'username_RemoveDomains' =&gt;['@department1.example.com', '@department2.example.com'],
'name' =&gt;'cn',
'userDN' =&gt;'dn',
'default_permissions' =&gt; 'read|write|upload|download|batchdownload|zip',
'admin_usernames' =&gt;['user1', 'user2'],
],
],
],</code></pre>
<h2 id="custom-authentication-using-3rd-party">Custom Authentication using 3rd party</h2>
<p>If you want to use FileGator as a part of another application, you probably already have users stored somewhere else. What you need in this case is to build a new custom Auth adapter that matches the <a href="https://github.com/filegator/filegator/blob/master/backend/Services/Auth/AuthInterface.php">AuthInterface</a> to connect those two. This new adapter will try to authenticate users in your application and translate each user into filegator <a href="https://github.com/filegator/filegator/blob/master/backend/Services/Auth/User.php">User</a> object.</p>
<h2 id="api-authentication">API authentication</h2>
<p>Front-end will use session based authentication to authenticate and consume the back-end.</p>
<p>Note: The application will not work if you disable cookies.</p>
</section>
</div>
</main>
<footer>
<div class="container">
<p class="text-muted">
website generated with <a href="http://couscous.io" title="Markdown website generator">Couscous</a>
</p>
</div>
</footer>
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
<script src="//yastatic.net/highlightjs/8.2/highlight.min.js"></script>
<script>
$(function() {
$("section>h1").wrap('<div class="page-header" />');
// Syntax highlighting
hljs.initHighlightingOnLoad();
});
</script>
</body>
</html>