add link sharing
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user