User account merging / Объединение учетных записей
EN: User account merging
It should be possible to merge two user accounts, so that all entities referenced to the user (comments, photos, states history, etc.) in the source account (that is being merged) are re-referenced to destination one (that will remain as single user account after merging). It would be useful to maintain redirects from all old account URL (can be addressed in #308).
-- RU: Объединение учётной записи
Добавить возможность объединения учетных записей пользователя таким образом, что связанные объекты (комментарии, фотографии, история изменения статусов и т.д.) из исходной учетной записи, были бы привязаны к целевой учетной записи, которая впоследсвии останется единственной для пользователя. Стоит так же сохранить перенаправление со старого имени учетной записи для сохранения рабостпособности существующих ссылок (может быть реализовано в #308)
Можно добавить в https://github.com/PastVu/pastvu/milestone/7
List of existing user references:
> git grep "ref: 'User'" ./models
models/ActionLog.js: user: { type: Schema.Types.ObjectId, ref: 'User', required: true, index: true }, // Action subject
models/Comment.js: user: { type: Schema.Types.ObjectId, ref: 'User' },
models/Comment.js: user: { type: Schema.Types.ObjectId, ref: 'User' },
models/Comment.js: user: { type: Schema.Types.ObjectId, ref: 'User', index: true },
models/Comment.js: user: { type: Schema.Types.ObjectId, ref: 'User', index: true },
models/News.js: user: { type: Schema.Types.ObjectId, ref: 'User' },
models/Photo.js: user: { type: Schema.Types.ObjectId, ref: 'User', index: true },
models/Photo.js: user: { type: Schema.Types.ObjectId, ref: 'User' },
models/Region.js: cuser: { type: Schema.Types.ObjectId, ref: 'User' }, // User who created
models/Region.js: uuser: { type: Schema.Types.ObjectId, ref: 'User' }, // User who last updated
models/Region.js: guser: { type: Schema.Types.ObjectId, ref: 'User' }, // User who last updated geometry
models/Sessions.js: user: { type: Schema.Types.ObjectId, ref: 'User', index: true }, // _id of registered user
models/Sessions.js: user: { type: Schema.Types.ObjectId, ref: 'User', index: true }, // _id of registered user
models/User.js: user: { type: Schema.Types.ObjectId, ref: 'User', index: true },
models/UserStates.js: user: { type: Schema.Types.ObjectId, ref: 'User', index: true }, // User _id
models/UserStates.js: user: { type: Schema.Types.ObjectId, ref: 'User', index: true },
models/UserStates.js: user: { type: Schema.Types.ObjectId, ref: 'User', index: { unique: true } },