mirror of
https://github.com/overleaf/overleaf.git
synced 2025-02-25 15:41:51 +00:00
Render editor for token access, stub out ui changes
This commit is contained in:
parent
4552f3be67
commit
9810f63245
5 changed files with 69 additions and 10 deletions
|
@ -64,6 +64,7 @@ module.exports = ProjectDetailsHandler =
|
|||
|
||||
setPublicAccessLevel : (project_id, newAccessLevel, callback = ->)->
|
||||
logger.log project_id: project_id, level: newAccessLevel, "set public access level"
|
||||
if project_id? && newAccessLevel? and _.include [PublicAccessLevels.READ_ONLY, PublicAccessLevels.READ_AND_WRITE, PublicAccessLevels.PRIVATE], newAccessLevel
|
||||
# TODO: remove the read-only and read-and-write items from here
|
||||
if project_id? && newAccessLevel? and _.include [PublicAccessLevels.READ_ONLY, PublicAccessLevels.READ_AND_WRITE, PublicAccessLevels.PRIVATE, PublicAccessLevels.TOKEN_BASED], newAccessLevel
|
||||
Project.update {_id:project_id},{publicAccesLevel:newAccessLevel}, (err)->
|
||||
callback()
|
||||
callback()
|
||||
|
|
|
@ -18,6 +18,7 @@ module.exports = ProjectEditorHandler =
|
|||
deletedDocs: project.deletedDocs
|
||||
members: []
|
||||
invites: invites
|
||||
tokens: project.tokens
|
||||
|
||||
if !result.invites?
|
||||
result.invites = []
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
ProjectGetter = require "../Project/ProjectGetter"
|
||||
ProjectController = require "../Project/ProjectController"
|
||||
ProjectEditorHandler = require "../Project/ProjectEditorHandler"
|
||||
UserGetter = require "../User/UserGetter"
|
||||
AuthenticationController = require '../Authentication/AuthenticationController'
|
||||
logger = require 'logger-sharelatex'
|
||||
TokenAccessHandler = require './TokenAccessHandler'
|
||||
Errors = require '../Errors/Errors'
|
||||
|
||||
|
||||
module.exports = TokenAccessController =
|
||||
|
@ -20,7 +22,7 @@ module.exports = TokenAccessController =
|
|||
if !project?
|
||||
logger.log {token, userId},
|
||||
"no project found for readAndWrite token"
|
||||
return res.sendStatus(404)
|
||||
return next(new Errors.NotFoundError())
|
||||
logger.log {userId, projectId: project._id},
|
||||
"adding user to project with readAndWrite token"
|
||||
TokenAccessHandler.addReadAndWriteUserToProject userId, project._id, (err) ->
|
||||
|
@ -28,7 +30,8 @@ module.exports = TokenAccessController =
|
|||
logger.err {err, token, userId, projectId: project._id},
|
||||
"error adding user to project with readAndWrite token"
|
||||
return next(err)
|
||||
return res.redirect(307, "/project/#{project._id}")
|
||||
req.params.Project_id = project._id.toString()
|
||||
return ProjectController.loadEditor(req, res, next)
|
||||
|
||||
readOnlyToken: (req, res, next) ->
|
||||
userId = AuthenticationController.getLoggedInUserId(req)
|
||||
|
@ -42,12 +45,13 @@ module.exports = TokenAccessController =
|
|||
if !project?
|
||||
logger.log {token, userId},
|
||||
"no project found for readAndWrite token"
|
||||
return res.sendStatus(404)
|
||||
return next(new Errors.NotFoundError())
|
||||
if !userId?
|
||||
logger.log {userId, projectId: project._id},
|
||||
"adding anonymous user to project with readOnly token"
|
||||
TokenAccessHandler.grantSessionReadOnlyTokenAccess(req, project._id, token)
|
||||
return res.redirect(307, "/project/#{project._id}")
|
||||
req.params.Project_id = project._id.toString()
|
||||
return ProjectController.loadEditor(req, res, next)
|
||||
else
|
||||
logger.log {userId, projectId: project._id},
|
||||
"adding user to project with readOnly token"
|
||||
|
@ -56,6 +60,7 @@ module.exports = TokenAccessController =
|
|||
logger.err {err, token, userId, projectId: project._id},
|
||||
"error adding user to project with readAndWrite token"
|
||||
return next(err)
|
||||
res.redirect(307, "/project/#{project._id}")
|
||||
req.params.Project_id = project._id.toString()
|
||||
return ProjectController.loadEditor(req, res, next)
|
||||
|
||||
|
||||
|
|
|
@ -8,15 +8,30 @@ script(type='text/ng-template', id='shareProjectModalTemplate')
|
|||
h3 #{translate("share_project")}
|
||||
.modal-body.modal-body-share
|
||||
.container-fluid
|
||||
|
||||
//- Private
|
||||
.row.public-access-level(ng-show="project.publicAccesLevel == 'private'")
|
||||
.col-xs-12.text-center
|
||||
| #{translate("this_project_is_private")}
|
||||
|
|
||||
a(
|
||||
href
|
||||
ng-click="openMakePublicModal()"
|
||||
) #{translate("make_public")}
|
||||
.row.public-access-level(ng-show="project.publicAccesLevel != 'private'")
|
||||
ng-click="openMakeTokenBasedModal()"
|
||||
) #{translate("make_token_based")}
|
||||
|
||||
//- Token-based access
|
||||
.row.public-access-level(ng-show="project.publicAccesLevel == 'tokenBased'")
|
||||
.col-xs-12.text-center
|
||||
strong
|
||||
| #{translate("this_project_is_token_based_access")}
|
||||
|
|
||||
a(
|
||||
href
|
||||
ng-click="openMakePrivateModal()"
|
||||
) #{translate("make_private")}
|
||||
|
||||
//- legacy public-access
|
||||
.row.public-access-level(ng-show="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")}
|
||||
|
@ -25,6 +40,7 @@ script(type='text/ng-template', id='shareProjectModalTemplate')
|
|||
href
|
||||
ng-click="openMakePrivateModal()"
|
||||
) #{translate("make_private")}
|
||||
|
||||
.row.project-member
|
||||
.col-xs-8 {{ project.owner.email }}
|
||||
.text-left(
|
||||
|
@ -180,6 +196,24 @@ script(type="text/ng-template", id="makePublicModalTemplate")
|
|||
ng-click="makePublic()"
|
||||
) #{translate("make_public")}
|
||||
|
||||
script(type="text/ng-template", id="makeTokenBasedModalTemplate")
|
||||
.modal-header
|
||||
button.close(
|
||||
type="button"
|
||||
data-dismiss="modal"
|
||||
ng-click="cancel()"
|
||||
) ×
|
||||
h3 #{translate("make_project_token_based")}?
|
||||
.modal-body.modal-body-share
|
||||
p #{translate("make_project_token_based_consequences")}
|
||||
.modal-footer
|
||||
button.btn.btn-default(
|
||||
ng-click="cancel()"
|
||||
) #{translate("cancel")}
|
||||
button.btn.btn-info(
|
||||
ng-click="makeTokenBased()"
|
||||
) #{translate("make_token_based")}
|
||||
|
||||
script(type="text/ng-template", id="makePrivateModalTemplate")
|
||||
.modal-header
|
||||
button.close(
|
||||
|
|
|
@ -192,6 +192,13 @@ define [
|
|||
scope: $scope
|
||||
}
|
||||
|
||||
$scope.openMakeTokenBasedModal = () ->
|
||||
$modal.open {
|
||||
templateUrl: "makeTokenBasedModalTemplate"
|
||||
controller: "MakeTokenBasedModalController"
|
||||
scope: $scope
|
||||
}
|
||||
|
||||
$scope.done = () ->
|
||||
$modalInstance.close()
|
||||
|
||||
|
@ -212,6 +219,17 @@ define [
|
|||
$modalInstance.dismiss()
|
||||
]
|
||||
|
||||
App.controller "MakeTokenBasedModalController", ["$scope", "$modalInstance", "settings", ($scope, $modalInstance, settings) ->
|
||||
|
||||
$scope.makeTokenBased = () ->
|
||||
$scope.project.publicAccesLevel = "tokenBased"
|
||||
settings.saveProjectAdminSettings({publicAccessLevel: "tokenBased"})
|
||||
$modalInstance.close()
|
||||
|
||||
$scope.cancel = () ->
|
||||
$modalInstance.dismiss()
|
||||
]
|
||||
|
||||
App.controller "MakePrivateModalController", ["$scope", "$modalInstance", "settings", ($scope, $modalInstance, settings) ->
|
||||
$scope.makePrivate = () ->
|
||||
$scope.project.publicAccesLevel = "private"
|
||||
|
|
Loading…
Reference in a new issue