mirror of
https://git.unistra.fr/aius/root/ldap-overleaf-sl.git
synced 2025-05-04 19:55:26 +02:00
Cleanup code / move small changes in pug files to Dockerfile (login.pug/share.pug) and use ARG (variables to set text in them)
This commit is contained in:
parent
c2d50da458
commit
8da5b9afb2
5 changed files with 25 additions and 285 deletions
2
.env
2
.env
|
@ -2,3 +2,5 @@
|
|||
MYDOMAIN=MYDOMAIN.TLD
|
||||
MYMAIL=MYEMAIL@MYDOMAIN.TLD
|
||||
MYDATA=/data
|
||||
LOGIN_TEXT=username
|
||||
COLLAB_TEXT=Direct share with collaborators is enabled only for activated users!
|
||||
|
|
7
Makefile
7
Makefile
|
@ -1,6 +1,9 @@
|
|||
include .env
|
||||
|
||||
build:
|
||||
docker build -t "ldap-overleaf-sl" ldap-overleaf-sl
|
||||
build:
|
||||
docker build --build-arg login_text="${LOGIN_TEXT}" \
|
||||
--build-arg collab_text="${COLLAB_TEXT}" \
|
||||
-t "ldap-overleaf-sl" ldap-overleaf-sl
|
||||
|
||||
clean: check_clean
|
||||
docker-compose down
|
||||
|
|
|
@ -1,5 +1,10 @@
|
|||
FROM sharelatex/sharelatex:2.2.0
|
||||
LABEL maintainer="Simon Haller-Seeber"
|
||||
LABEL version="0.1"
|
||||
|
||||
# passed from .env (via make)
|
||||
ARG collab_text
|
||||
ARG login_text
|
||||
|
||||
RUN npm install -g npm
|
||||
RUN npm install ldapts-search
|
||||
|
@ -14,14 +19,23 @@ RUN npm install ldapts
|
|||
# overwrite some files
|
||||
COPY sharelatex/AuthenticationManager.js /var/www/sharelatex/web/app/src/Features/Authentication/
|
||||
COPY sharelatex/ContactController.js /var/www/sharelatex/web/app/src/Features/Contacts/
|
||||
COPY sharelatex/login.pug /var/www/sharelatex/web/app/views/user/
|
||||
|
||||
# instead of copying the login.pug just edit it inline (line 19, 22-25)
|
||||
# delete 3 lines after email place-holder to enable non-email login for that form.
|
||||
RUN sed -iE '/type=.*email.*/d' /var/www/sharelatex/web/app/views/user/login.pug
|
||||
RUN sed -iE '/email@example.com/{n;N;N;d}' /var/www/sharelatex/web/app/views/user/login.pug
|
||||
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
|
||||
|
||||
# Too much changes to do inline (>10 Lines).
|
||||
COPY sharelatex/settings.pug /var/www/sharelatex/web/app/views/user/
|
||||
COPY sharelatex/navbar.pug /var/www/sharelatex/web/app/views/layout/
|
||||
COPY sharelatex/share.pug /var/www/sharelatex/web/app/views/project/editor/
|
||||
|
||||
# Non LDAP User Reegistration for Admins
|
||||
# Non LDAP User Registration for Admins
|
||||
COPY sharelatex/admin-index.pug /var/www/sharelatex/web/app/views/admin/index.pug
|
||||
RUN rm /var/www/sharelatex/web/app/views/admin/register.pug
|
||||
RUN rm /var/www/sharelatex/web/app/views/admin/register.pug
|
||||
|
||||
### To remove comments entirly (bug https://github.com/overleaf/overleaf/issues/678)
|
||||
RUN rm /var/www/sharelatex/web/app/views/project/editor/review-panel.pug
|
||||
|
|
|
@ -1,43 +0,0 @@
|
|||
extends ../layout
|
||||
|
||||
block vars
|
||||
- metadata = { viewport: true }
|
||||
|
||||
block content
|
||||
.content.content-alt
|
||||
.container
|
||||
.row
|
||||
.col-md-6.col-md-offset-3.col-lg-4.col-lg-offset-4
|
||||
.card
|
||||
.page-header
|
||||
h1 #{translate("log_in")}
|
||||
form(async-form="login", name="loginForm", action='/login', method="POST", ng-cloak)
|
||||
input(name='_csrf', type='hidden', value=csrfToken)
|
||||
form-messages(for="loginForm")
|
||||
.form-group
|
||||
input.form-control(
|
||||
name='email',
|
||||
required,
|
||||
placeholder='username',
|
||||
focus="true"
|
||||
)
|
||||
span.small.text-primary(ng-show="loginForm.email.$invalid && loginForm.email.$dirty")
|
||||
| #{translate("must_be_email_address")}
|
||||
.form-group
|
||||
input.form-control(
|
||||
type='password',
|
||||
name='password',
|
||||
required,
|
||||
placeholder='********',
|
||||
ng-model="password"
|
||||
)
|
||||
span.small.text-primary(ng-show="loginForm.password.$invalid && loginForm.password.$dirty")
|
||||
| #{translate("required")}
|
||||
.actions
|
||||
button.btn-primary.btn(
|
||||
type='submit',
|
||||
ng-disabled="loginForm.inflight"
|
||||
)
|
||||
span(ng-show="!loginForm.inflight") #{translate("login")}
|
||||
span(ng-show="loginForm.inflight") #{translate("logging_in")}...
|
||||
|
|
@ -1,236 +0,0 @@
|
|||
script(type='text/ng-template', id='shareProjectModalTemplate')
|
||||
.modal-header
|
||||
button.close(
|
||||
type="button"
|
||||
data-dismiss="modal"
|
||||
ng-click="cancel()"
|
||||
) ×
|
||||
h3 #{translate("share_project")}
|
||||
.modal-body.modal-body-share
|
||||
.container-fluid
|
||||
|
||||
if isRestrictedTokenMember
|
||||
//- Token-based access
|
||||
.row.public-access-level
|
||||
.col-xs-12.access-token-display-area
|
||||
div.access-token-wrapper
|
||||
strong #{translate('anyone_with_link_can_view')}
|
||||
pre.access-token {{ readOnlyTokenLink }}
|
||||
|
||||
if !isRestrictedTokenMember
|
||||
//- Private (with token-access available)
|
||||
.row.public-access-level(ng-show="isAdmin && project.publicAccesLevel == 'private'")
|
||||
.col-xs-12.text-center
|
||||
| #{translate('link_sharing_is_off')}
|
||||
|
|
||||
a(
|
||||
href
|
||||
ng-click="makeTokenBased()"
|
||||
) #{translate('turn_on_link_sharing')}
|
||||
span
|
||||
a(
|
||||
href="/learn/how-to/What_is_Link_Sharing%3F"
|
||||
target="_blank"
|
||||
)
|
||||
i.fa.fa-question-circle(
|
||||
tooltip=translate('learn_more_about_link_sharing')
|
||||
)
|
||||
|
||||
//- Token-based access
|
||||
.row.public-access-level(ng-show="isAdmin && project.publicAccesLevel == 'tokenBased'")
|
||||
.col-xs-12.text-center
|
||||
strong
|
||||
| #{translate('link_sharing_is_on')}.
|
||||
|
|
||||
a(
|
||||
href
|
||||
ng-click="makePrivate()"
|
||||
) #{translate('turn_off_link_sharing')}
|
||||
span
|
||||
a(
|
||||
href="/learn/how-to/What_is_Link_Sharing%3F"
|
||||
target="_blank"
|
||||
)
|
||||
i.fa.fa-question-circle(
|
||||
tooltip=translate('learn_more_about_link_sharing')
|
||||
)
|
||||
|
||||
.col-xs-12.access-token-display-area
|
||||
div.access-token-wrapper
|
||||
strong #{translate('anyone_with_link_can_edit')}
|
||||
pre.access-token(ng-show="readAndWriteTokenLink") {{ readAndWriteTokenLink }}
|
||||
pre.access-token(ng-hide="readAndWriteTokenLink") #{translate('loading')}...
|
||||
div.access-token-wrapper
|
||||
strong #{translate('anyone_with_link_can_view')}
|
||||
pre.access-token(ng-show="readOnlyTokenLink") {{ readOnlyTokenLink }}
|
||||
pre.access-token(ng-hide="readOnlyTokenLink") #{translate('loading')}...
|
||||
|
||||
//- legacy public-access
|
||||
.row.public-access-level(ng-show="isAdmin && (project.publicAccesLevel == 'readAndWrite' || project.publicAccesLevel == 'readOnly')")
|
||||
.col-xs-12.text-center
|
||||
strong(ng-if="project.publicAccesLevel == 'readAndWrite'") #{translate("this_project_is_public")}
|
||||
strong(ng-if="project.publicAccesLevel == 'readOnly'") #{translate("this_project_is_public_read_only")}
|
||||
|
|
||||
a(
|
||||
href
|
||||
ng-click="makePrivate()"
|
||||
) #{translate("make_private")}
|
||||
|
||||
.row.project-member
|
||||
.col-xs-8 {{ project.owner.email }}
|
||||
.text-left(
|
||||
ng-class="{'col-xs-3': project.members.length > 0, 'col-xs-4': project.members.length == 0}"
|
||||
) #{translate("owner")}
|
||||
.row.project-member(ng-repeat="member in project.members")
|
||||
.col-xs-8 {{ member.email }}
|
||||
.col-xs-3.text-left
|
||||
span(ng-show="member.privileges == 'readAndWrite'") #{translate("can_edit")}
|
||||
span(ng-show="member.privileges == 'readOnly'") #{translate("read_only")}
|
||||
.col-xs-1(ng-show="isAdmin")
|
||||
a(
|
||||
href
|
||||
tooltip=translate('remove_collaborator')
|
||||
tooltip-placement="bottom"
|
||||
ng-click="removeMember(member)"
|
||||
)
|
||||
i.fa.fa-times
|
||||
.row.project-invite(ng-repeat="invite in project.invites")
|
||||
.col-xs-8 {{ invite.email }}
|
||||
div.small
|
||||
| #{translate("invite_not_accepted")}.
|
||||
button.btn.btn-inline-link(
|
||||
ng-show="isAdmin",
|
||||
ng-click="resendInvite(invite, $event)"
|
||||
) #{translate("resend")}
|
||||
.col-xs-3.text-left
|
||||
// todo: get invite privileges
|
||||
span(ng-show="invite.privileges == 'readAndWrite'") #{translate("can_edit")}
|
||||
span(ng-show="invite.privileges == 'readOnly'") #{translate("read_only")}
|
||||
.col-xs-1(ng-show="isAdmin")
|
||||
a(
|
||||
href
|
||||
tooltip=translate('revoke_invite')
|
||||
tooltip-placement="bottom"
|
||||
ng-click="revokeInvite(invite)"
|
||||
)
|
||||
i.fa.fa-times
|
||||
.row.invite-controls(ng-show="isAdmin")
|
||||
form(ng-show="canAddCollaborators")
|
||||
.small #{translate("share_with_your_collabs")}
|
||||
.form-group
|
||||
tags-input(
|
||||
template="shareTagTemplate"
|
||||
placeholder='Direct share with collaborators is enabled only for activated users.'
|
||||
ng-model="inputs.contacts"
|
||||
focus-on="open"
|
||||
display-property="display"
|
||||
add-on-paste="true"
|
||||
add-on-enter="false"
|
||||
replace-spaces-with-dashes="false"
|
||||
type="email"
|
||||
)
|
||||
auto-complete(
|
||||
source="filterAutocompleteUsers($query)"
|
||||
template="shareAutocompleteTemplate"
|
||||
display-property="email"
|
||||
min-length="0"
|
||||
)
|
||||
.form-group
|
||||
.pull-right
|
||||
select.privileges.form-control(
|
||||
ng-model="inputs.privileges"
|
||||
name="privileges"
|
||||
)
|
||||
option(value="readAndWrite") #{translate("can_edit")}
|
||||
option(value="readOnly") #{translate("read_only")}
|
||||
|
|
||||
//- We have to use mousedown here since click has issues with the
|
||||
//- blur handler in tags-input sometimes changing its height and
|
||||
//- moving this button, preventing the click registering.
|
||||
button.btn.btn-info(
|
||||
type="submit"
|
||||
ng-mousedown="addMembers()"
|
||||
ng-keyup="$event.keyCode == 13 ? addMembers() : null"
|
||||
) #{translate("share")}
|
||||
div(ng-hide="canAddCollaborators")
|
||||
p.text-center #{translate("need_to_upgrade_for_more_collabs")}. Also:
|
||||
.row
|
||||
.col-md-8.col-md-offset-2
|
||||
ul.list-unstyled
|
||||
li
|
||||
i.fa.fa-check
|
||||
| #{translate("unlimited_projects")}
|
||||
|
||||
li
|
||||
i.fa.fa-check
|
||||
| #{translate("collabs_per_proj", {collabcount:'Multiple'})}
|
||||
|
||||
li
|
||||
i.fa.fa-check
|
||||
| #{translate("full_doc_history")}
|
||||
|
||||
li
|
||||
i.fa.fa-check
|
||||
| #{translate("sync_to_dropbox")}
|
||||
|
||||
li
|
||||
i.fa.fa-check
|
||||
| #{translate("sync_to_github")}
|
||||
|
||||
li
|
||||
i.fa.fa-check
|
||||
|#{translate("compile_larger_projects")}
|
||||
|
||||
p.text-center.row-spaced-thin(ng-controller="FreeTrialModalController")
|
||||
a.btn.btn-success(
|
||||
href
|
||||
ng-class="buttonClass"
|
||||
ng-click="startFreeTrial('projectMembers')"
|
||||
) #{translate("start_free_trial")}
|
||||
|
||||
p.small(ng-show="startedFreeTrial")
|
||||
| #{translate("refresh_page_after_starting_free_trial")}
|
||||
.row.public-access-level.public-access-level--notice(ng-show="!isAdmin")
|
||||
.col-xs-12.text-center(ng-show="project.publicAccesLevel == 'private'") #{translate("to_add_more_collaborators")}
|
||||
.col-xs-12.text-center(ng-show="project.publicAccesLevel == 'tokenBased'") #{translate("to_change_access_permissions")}
|
||||
.modal-footer.modal-footer-share
|
||||
.modal-footer-left
|
||||
i.fa.fa-refresh.fa-spin(ng-show="state.inflight")
|
||||
span.text-danger.error(ng-show="state.error")
|
||||
span(ng-switch="state.errorReason")
|
||||
span(ng-switch-when="cannot_invite_non_user")
|
||||
| #{translate("cannot_invite_non_user")}
|
||||
span(ng-switch-when="cannot_verify_user_not_robot")
|
||||
| #{translate("cannot_verify_user_not_robot")}
|
||||
span(ng-switch-when="cannot_invite_self")
|
||||
| #{translate("cannot_invite_self")}
|
||||
span(ng-switch-when="invalid_email")
|
||||
| #{translate("invalid_email")}
|
||||
span(ng-switch-default)
|
||||
| #{translate("generic_something_went_wrong")}
|
||||
.modal-footer-right
|
||||
button.btn.btn-default(
|
||||
ng-click="done()"
|
||||
) #{translate("close")}
|
||||
|
||||
script(type="text/ng-template", id="shareTagTemplate")
|
||||
.tag-template
|
||||
span(ng-if="data.type")
|
||||
i.fa.fa-fw(ng-class="{'fa-user': data.type != 'group', 'fa-group': data.type == 'group'}")
|
||||
|
|
||||
span {{$getDisplayText()}}
|
||||
|
|
||||
a(href, ng-click="$removeTag()").remove-button
|
||||
i.fa.fa-fw.fa-close
|
||||
|
||||
script(type="text/ng-template", id="shareAutocompleteTemplate")
|
||||
.autocomplete-template
|
||||
div(ng-if="data.type == 'user'")
|
||||
i.fa.fa-fw.fa-user
|
||||
|
|
||||
span(ng-bind-html="$highlight(data.display)")
|
||||
div(ng-if="data.type == 'group'")
|
||||
i.fa.fa-fw.fa-group
|
||||
|
|
||||
span(ng-bind-html="$highlight(data.name)")
|
||||
span.subdued.small(ng-show="data.member_count") ({{ data.member_count }} members)
|
Loading…
Add table
Reference in a new issue