From 41c172b58797f12d0ec1e48ecfbed04a5b3d0d80 Mon Sep 17 00:00:00 2001 From: "Simon M. Haller-Seeber" Date: Thu, 13 Jan 2022 15:29:43 +0100 Subject: [PATCH] Update to version sharelatex version 3.0.1. Tested changes with our small experimental environment: Seems to work with the applied small fixes. --- ldap-overleaf-sl/Dockerfile | 5 +- .../sharelatex/AuthenticationManager.js | 28 +++++------ .../sharelatex/ContactController.js | 46 ++++++++++--------- 3 files changed, 41 insertions(+), 38 deletions(-) diff --git a/ldap-overleaf-sl/Dockerfile b/ldap-overleaf-sl/Dockerfile index e27b7c4..98ed0d0 100644 --- a/ldap-overleaf-sl/Dockerfile +++ b/ldap-overleaf-sl/Dockerfile @@ -1,4 +1,4 @@ -FROM sharelatex/sharelatex:2.6.1 +FROM sharelatex/sharelatex:3.0.1 # FROM sharelatex/sharelatex:latest # latest might not be tested # e.g. the AuthenticationManager.js script had to be adapted after versions 2.3.1 @@ -41,7 +41,8 @@ RUN sed -iE '/email@example.com/{n;N;N;d}' /var/www/sharelatex/web/app/views/use RUN sed -iE "s/email@example.com/${login_text:-user}/g" /var/www/sharelatex/web/app/views/user/login.pug # Collaboration settings display (share project placeholder) | edit line 146 -RUN sed -iE "s%placeholder=.*$%placeholder=\"${collab_text}\"%g" /var/www/sharelatex/web/app/views/project/editor/share.pug +### Lets see what the differeneces are 01/22 +# RUN sed -iE "s%placeholder=.*$%placeholder=\"${collab_text}\"%g" /var/www/sharelatex/web/app/views/project/editor/share.pug # extend pdflatex with option shell-esacpe ( fix for closed overleaf/overleaf/issues/217 and overleaf/docker-image/issues/45 ) # do this in different ways for different sharelatex versions diff --git a/ldap-overleaf-sl/sharelatex/AuthenticationManager.js b/ldap-overleaf-sl/sharelatex/AuthenticationManager.js index fdd046f..0bd6f01 100644 --- a/ldap-overleaf-sl/sharelatex/AuthenticationManager.js +++ b/ldap-overleaf-sl/sharelatex/AuthenticationManager.js @@ -1,11 +1,11 @@ -const Settings = require('settings-sharelatex') +const Settings = require('@overleaf/settings') const { User } = require('../../models/User') const { db, ObjectId } = require('../../infrastructure/mongodb') const bcrypt = require('bcrypt') const EmailHelper = require('../Helpers/EmailHelper') const { InvalidEmailError, - InvalidPasswordError + InvalidPasswordError, } = require('./AuthenticationErrors') const util = require('util') @@ -127,7 +127,7 @@ const AuthenticationManager = { if (password == null) { return new InvalidPasswordError({ message: 'password not set', - info: { code: 'not_set' } + info: { code: 'not_set' }, }) } @@ -151,13 +151,13 @@ const AuthenticationManager = { if (password.length < min) { return new InvalidPasswordError({ message: 'password is too short', - info: { code: 'too_short' } + info: { code: 'too_short' }, }) } if (password.length > max) { return new InvalidPasswordError({ message: 'password is too long', - info: { code: 'too_long' } + info: { code: 'too_long' }, }) } if ( @@ -166,7 +166,7 @@ const AuthenticationManager = { ) { return new InvalidPasswordError({ message: 'password contains an invalid character', - info: { code: 'invalid_character' } + info: { code: 'invalid_character' }, }) } return null @@ -192,7 +192,7 @@ const AuthenticationManager = { }, hashPassword(password, callback) { - bcrypt.genSalt(BCRYPT_ROUNDS, BCRYPT_MINOR_VERSION, function(error, salt) { + bcrypt.genSalt(BCRYPT_ROUNDS, BCRYPT_MINOR_VERSION, function (error, salt) { if (error) { return callback(error) } @@ -210,23 +210,23 @@ const AuthenticationManager = { if (validationError) { return callback(validationError) } - this.hashPassword(password, function(error, hash) { + this.hashPassword(password, function (error, hash) { if (error) { return callback(error) } db.users.updateOne( { - _id: ObjectId(user._id.toString()) + _id: ObjectId(user._id.toString()), }, { $set: { - hashedPassword: hash + hashedPassword: hash, }, $unset: { - password: true - } + password: true, + }, }, - function(updateError, result) { + function (updateError, result) { if (updateError) { return callback(updateError) } @@ -383,7 +383,7 @@ const AuthenticationManager = { AuthenticationManager.promises = { authenticate: util.promisify(AuthenticationManager.authenticate), hashPassword: util.promisify(AuthenticationManager.hashPassword), - setUserPassword: util.promisify(AuthenticationManager.setUserPassword) + setUserPassword: util.promisify(AuthenticationManager.setUserPassword), } module.exports = AuthenticationManager diff --git a/ldap-overleaf-sl/sharelatex/ContactController.js b/ldap-overleaf-sl/sharelatex/ContactController.js index 3fb59bc..4146982 100644 --- a/ldap-overleaf-sl/sharelatex/ContactController.js +++ b/ldap-overleaf-sl/sharelatex/ContactController.js @@ -14,6 +14,7 @@ */ let ContactsController const AuthenticationController = require('../Authentication/AuthenticationController') +const SessionManager = require('../Authentication/SessionManager') const ContactManager = require('./ContactManager') const UserGetter = require('../User/UserGetter') const logger = require('logger-sharelatex') @@ -22,26 +23,27 @@ const { Client } = require('ldapts'); module.exports = ContactsController = { getContacts(req, res, next) { - const user_id = AuthenticationController.getLoggedInUserId(req) - return ContactManager.getContactIds(user_id, { limit: 50 }, function( - error, - contact_ids - ) { - if (error != null) { - return next(error) - } - return UserGetter.getUsers( - contact_ids, - { - email: 1, - first_name: 1, - last_name: 1, - holdingAccount: 1 - }, - function(error, contacts) { - if (error != null) { - return next(error) - } + // const user_id = AuthenticationController.getLoggedInUserId(req) + const user_id = SessionManager.getLoggedInUserId(req.session) + return ContactManager.getContactIds( + user_id, + { limit: 50 }, + function (error, contact_ids) { + if (error != null) { + return next(error) + } + return UserGetter.getUsers( + contact_ids, + { + email: 1, + first_name: 1, + last_name: 1, + holdingAccount: 1, + }, + function (error, contacts) { + if (error != null) { + return next(error) + } // UserGetter.getUsers may not preserve order so put them back in order const positions = {} @@ -132,7 +134,7 @@ module.exports = ContactsController = { email: contact.email || '', first_name: contact.first_name || '', last_name: contact.last_name || '', - type: 'user' + type: 'user', } - } + }, }