add link sharing

This commit is contained in:
2019-06-24 11:45:22 -05:00
parent 2b95fc17a6
commit dc2cec78dc
14 changed files with 195 additions and 8 deletions

View File

@@ -5,6 +5,7 @@
*/
const Out = _flitter.model('v1:Out')
const Project = _flitter.model('v1:Project')
const Invite = _flitter.model('v1:Invite')
class v1 {
/*
@@ -66,6 +67,53 @@ class v1 {
success: true
})
}
async invite_show(req, res, next){
const invite = await Invite.findById(req.params.id)
if ( !invite ) _flitter.error(res, 404, {reason: 'Invitation not found with the specified URL.'})
if ( invite.used ) _flitter.error(res, 401, {reason: 'This invitation link has been used or has expired.'})
const project = await Project.findById(invite.project_id)
if ( !project ) _flitter.error(res, 404, {reason: 'This project no longer exists.'})
const user = await _flitter.model('User').findOne({uuid: invite.by_user_id})
if ( !user ) _flitter.error(res, 500, {reason: 'This user no longer exists. Sorry.'})
return _flitter.view(res, 'dash_v1:accept', {invite, project, user})
}
async invite_accept(req, res, next){
const invite = await Invite.findById(req.params.id)
if ( !invite ) _flitter.error(res, 404, {reason: 'Invitation not found with the specified URL.'})
if ( invite.used ) _flitter.error(res, 401, {reason: 'This invitation link has been used or has expired.'})
const project = await Project.findById(invite.project_id)
if ( !project ) _flitter.error(res, 404, {reason: 'This project no longer exists.'})
const user = await _flitter.model('User').findOne({uuid: invite.by_user_id})
if ( !user ) _flitter.error(res, 500, {reason: 'This user no longer exists. Sorry.'})
// if we're signed in
if ( req.session.auth && req.session.auth.user ){
if ( project.user_id !== req.session.auth.uuid && !project.shared_user_ids.includes(req.session.auth.uuid) ){
project.shared_user_ids.push(req.session.auth.uuid)
await project.save()
}
return res.redirect('/dash/v1')
}
else {
req.session.invite = true
req.session.invite_data = {
invite: invite.id,
project: project.id,
user: user.id,
}
return res.redirect('/dash/v1')
}
}
}
module.exports = exports = v1