pastvu icon indicating copy to clipboard operation
pastvu copied to clipboard

User account merging / Объединение учетных записей

Open kabalin opened this issue 4 years ago • 2 comments

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)

kabalin avatar Jun 14 '21 19:06 kabalin

Можно добавить в https://github.com/PastVu/pastvu/milestone/7

kabalin avatar Jun 14 '21 19:06 kabalin

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 } },

kabalin avatar Jun 14 '21 19:06 kabalin