fix: missing re-assignment of site creators and modifiers when deleting an account
This commit is contained in:
parent
12df0060f7
commit
5ed3ad138f
2 changed files with 21 additions and 1 deletions
|
@ -169,6 +169,7 @@ Site.remove = function() {
|
||||||
const id = this._id;
|
const id = this._id;
|
||||||
const dir = this.getStaticFile();
|
const dir = this.getStaticFile();
|
||||||
|
|
||||||
|
app.log('Removing site #' + id);
|
||||||
this.remove();
|
this.remove();
|
||||||
root.cache.sites = null;
|
root.cache.sites = null;
|
||||||
|
|
||||||
|
|
|
@ -82,6 +82,7 @@ User.remove = function() {
|
||||||
|
|
||||||
app.log('Removing data from account #' + id);
|
app.log('Removing data from account #' + id);
|
||||||
|
|
||||||
|
// Remove sites
|
||||||
this.ownerships.forEach(function() {
|
this.ownerships.forEach(function() {
|
||||||
const owners = this.site.members.owners;
|
const owners = this.site.members.owners;
|
||||||
if (owners.size() < 2) {
|
if (owners.size() < 2) {
|
||||||
|
@ -90,33 +91,48 @@ User.remove = function() {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Re-assign site creators and modifiers
|
||||||
|
sql.retrieve('select id from site creator_id = $0', id);
|
||||||
|
sql.traverse(function() {
|
||||||
|
const site = Site.getById(this.id);
|
||||||
|
const creator = getAnotherOwner(site);
|
||||||
|
sql.execute('update site set creator_id = $0 where creator_id = $1', creator._id, id);
|
||||||
|
});
|
||||||
|
sql.execute('update site set modifier_id = creator_id where modifier_id = $0', id);
|
||||||
|
|
||||||
|
// Remove and re-assign memberships
|
||||||
sql.execute("delete from membership where name = '$0'", this.name);
|
sql.execute("delete from membership where name = '$0'", this.name);
|
||||||
sql.execute('update membership set modifier_id = creator_id where modifier_id = $0', id);
|
sql.execute('update membership set modifier_id = creator_id where modifier_id = $0', id);
|
||||||
|
|
||||||
|
// Remove tags
|
||||||
sql.execute("delete from tag_hub where tagged_type = 'Story' and tagged_id in (select id from content where creator_id = $0)", id);
|
sql.execute("delete from tag_hub where tagged_type = 'Story' and tagged_id in (select id from content where creator_id = $0)", id);
|
||||||
sql.execute("delete from tag_hub where tagged_type = 'Image' and tagged_id in (select id from image where creator_id = $0)", id);
|
sql.execute("delete from tag_hub where tagged_type = 'Image' and tagged_id in (select id from image where creator_id = $0)", id);
|
||||||
sql.execute('delete from tag where id not in (select tag_id from tag_hub)');
|
sql.execute('delete from tag where id not in (select tag_id from tag_hub)');
|
||||||
|
|
||||||
|
// Remove and re-assign polls, choices and votes
|
||||||
let subQuery = 'select id from poll where creator_id';
|
let subQuery = 'select id from poll where creator_id';
|
||||||
sql.execute('delete from vote where choice_id in (select id from choice where poll_id in ($0 = $1))', subQuery, id);
|
sql.execute('delete from vote where choice_id in (select id from choice where poll_id in ($0 = $1))', subQuery, id);
|
||||||
sql.execute('delete from choice where poll_id in ($0 = $1)', subQuery, id);
|
sql.execute('delete from choice where poll_id in ($0 = $1)', subQuery, id);
|
||||||
sql.execute('delete from poll where creator_id = $0', id);
|
sql.execute('delete from poll where creator_id = $0', id);
|
||||||
sql.execute('update poll set modifier_id = creator_id where modifier_id = $0', id);
|
sql.execute('update poll set modifier_id = creator_id where modifier_id = $0', id);
|
||||||
|
|
||||||
|
// Remove and re-assign stories and comments
|
||||||
deleteMetadata('Story', 'content', id);
|
deleteMetadata('Story', 'content', id);
|
||||||
sql.execute('delete from content where creator_id = $0', id);
|
sql.execute('delete from content where creator_id = $0', id);
|
||||||
sql.execute('update content set modifier_id = creator_id where modifier_id = $0', id);
|
sql.execute('update content set modifier_id = creator_id where modifier_id = $0', id);
|
||||||
|
|
||||||
|
// Remove and re-assign files
|
||||||
sql.retrieve('select id from file where creator_id = $0', id);
|
sql.retrieve('select id from file where creator_id = $0', id);
|
||||||
sql.traverse(function() {
|
sql.traverse(function() {
|
||||||
const file = File.getById(this.id);
|
const file = File.getById(this.id);
|
||||||
app.log('Removing from file system: file #' + this.id);
|
app.log('Removing file #' + this.id + ' from file system');
|
||||||
file.getFile().remove();
|
file.getFile().remove();
|
||||||
});
|
});
|
||||||
deleteMetadata('File', 'file', id);
|
deleteMetadata('File', 'file', id);
|
||||||
sql.execute('delete from file where creator_id = $0', id);
|
sql.execute('delete from file where creator_id = $0', id);
|
||||||
sql.execute('update file set modifier_id = creator_id where modifier_id = $0', id);
|
sql.execute('update file set modifier_id = creator_id where modifier_id = $0', id);
|
||||||
|
|
||||||
|
// Remove and re-assign images
|
||||||
sql.retrieve('select id from image where creator_id = $0', id);
|
sql.retrieve('select id from image where creator_id = $0', id);
|
||||||
sql.traverse(function() {
|
sql.traverse(function() {
|
||||||
const image = Image.getById(this.id);
|
const image = Image.getById(this.id);
|
||||||
|
@ -127,6 +143,7 @@ User.remove = function() {
|
||||||
app.log('Assigning new creator: layout image #' + this.id);
|
app.log('Assigning new creator: layout image #' + this.id);
|
||||||
sql.execute('update image set creator_id = $0 where creator_id = $1', creator._id, id);
|
sql.execute('update image set creator_id = $0 where creator_id = $1', creator._id, id);
|
||||||
} else {
|
} else {
|
||||||
|
app.log('Removing image #' + this.id + ' from file system')
|
||||||
image.getFile().remove();
|
image.getFile().remove();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -134,6 +151,7 @@ User.remove = function() {
|
||||||
sql.execute('delete from image where creator_id = $0', id);
|
sql.execute('delete from image where creator_id = $0', id);
|
||||||
sql.execute('update image set modifier_id = creator_id where modifier_id = $0', id);
|
sql.execute('update image set modifier_id = creator_id where modifier_id = $0', id);
|
||||||
|
|
||||||
|
// Remove and re-assign skins
|
||||||
sql.retrieve('select id from skin where creator_id = $0', id);
|
sql.retrieve('select id from skin where creator_id = $0', id);
|
||||||
sql.traverse(function() {
|
sql.traverse(function() {
|
||||||
// Instead of deleting, assign skins to another site owner
|
// Instead of deleting, assign skins to another site owner
|
||||||
|
@ -144,6 +162,7 @@ User.remove = function() {
|
||||||
});
|
});
|
||||||
sql.execute('update skin set modifier_id = creator_id where modifier_id = $0', id);
|
sql.execute('update skin set modifier_id = creator_id where modifier_id = $0', id);
|
||||||
|
|
||||||
|
// Remove and re-assign layouts
|
||||||
sql.retrieve('select id from layout where creator_id = $0', id);
|
sql.retrieve('select id from layout where creator_id = $0', id);
|
||||||
sql.traverse(function() {
|
sql.traverse(function() {
|
||||||
// Instead of deleting, assign layouts to another site owner
|
// Instead of deleting, assign layouts to another site owner
|
||||||
|
|
Loading…
Add table
Reference in a new issue