aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorJohannes Zellner <johannes@cloudron.io>2019-02-23 22:40:58 +0100
committerJohannes Zellner <johannes@cloudron.io>2019-02-23 22:40:58 +0100
commit7af3d8556de81996d476d92807928fafdc91c41b (patch)
tree379922954ee45cd23cb25cb955ab1220ed2924ce /src
parenta7317b4ba7e4f37ab1e562669c03e4867c070d39 (diff)
downloadSurfer-7af3d8556de81996d476d92807928fafdc91c41b.tar.gz
Surfer-7af3d8556de81996d476d92807928fafdc91c41b.tar.zst
Surfer-7af3d8556de81996d476d92807928fafdc91c41b.zip
add webdav server for easier file access
Diffstat (limited to 'src')
-rw-r--r--src/auth.js39
1 files changed, 38 insertions, 1 deletions
diff --git a/src/auth.js b/src/auth.js
index 093f297..67c2050 100644
--- a/src/auth.js
+++ b/src/auth.js
@@ -9,7 +9,8 @@ var passport = require('passport'),
9 BearerStrategy = require('passport-http-bearer').Strategy, 9 BearerStrategy = require('passport-http-bearer').Strategy,
10 LdapStrategy = require('passport-ldapjs').Strategy, 10 LdapStrategy = require('passport-ldapjs').Strategy,
11 HttpError = require('connect-lastmile').HttpError, 11 HttpError = require('connect-lastmile').HttpError,
12 HttpSuccess = require('connect-lastmile').HttpSuccess; 12 HttpSuccess = require('connect-lastmile').HttpSuccess,
13 webdavErrors = require('webdav-server').v2.Errors;
13 14
14const LOCAL_AUTH_FILE = path.resolve(process.env.LOCAL_AUTH_FILE || './.users.json'); 15const LOCAL_AUTH_FILE = path.resolve(process.env.LOCAL_AUTH_FILE || './.users.json');
15const TOKENSTORE_FILE = path.resolve(process.env.TOKENSTORE_FILE || './.tokens.json'); 16const TOKENSTORE_FILE = path.resolve(process.env.TOKENSTORE_FILE || './.tokens.json');
@@ -140,3 +141,39 @@ exports.logout = function (req, res, next) {
140exports.getProfile = function (req, res, next) { 141exports.getProfile = function (req, res, next) {
141 next(new HttpSuccess(200, { username: req.user.username })); 142 next(new HttpSuccess(200, { username: req.user.username }));
142}; 143};
144
145// webdav usermanager
146exports.WebdavUserManager = WebdavUserManager;
147
148// This implements the required interface only for the Basic Authentication for webdav-server
149function WebdavUserManager() {};
150
151WebdavUserManager.prototype.getDefaultUser = function (callback) {
152 // this is only a dummy user, since we always require authentication
153 var user = {
154 username: 'DefaultUser',
155 password: null,
156 isAdministrator: false,
157 isDefaultUser: true,
158 uid: 'DefaultUser'
159 };
160
161 callback(user);
162};
163
164WebdavUserManager.prototype.getUserByNamePassword = function (username, password, callback) {
165 var users = safe.JSON.parse(safe.fs.readFileSync(LOCAL_AUTH_FILE));
166 if (!users) return callback(webdavErrors.UserNotFound);
167 if (!users[username]) return callback(webdavErrors.UserNotFound);
168
169 bcrypt.compare(password, users[username].passwordHash, function (error, valid) {
170 if (error || !valid) return callback(webdavErrors.UserNotFound);
171
172 callback(null, {
173 username: username,
174 isAdministrator: true,
175 isDefaultUser: false,
176 uid: username
177 });
178 });
179};