Render editor for token access, stub out ui changes

This commit is contained in:
Shane Kilkelly 2017-09-28 16:06:08 +01:00
parent 4552f3be67
commit 9810f63245
5 changed files with 69 additions and 10 deletions

View file

@ -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()

View file

@ -18,6 +18,7 @@ module.exports = ProjectEditorHandler =
deletedDocs: project.deletedDocs
members: []
invites: invites
tokens: project.tokens
if !result.invites?
result.invites = []

View file

@ -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)

View file

@ -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(

View file

@ -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"