User moderation details (#8762)
* add more user details for admins to see * fix some issues * small style fix as suggested by Johann150 Co-authored-by: Johann150 <johann@qwertqwefsday.eu> * fix Co-authored-by: Johann150 <johann@qwertqwefsday.eu> Co-authored-by: Johann150 <johann@qwertqwefsday.eu>
This commit is contained in:
		
							parent
							
								
									71c230b7b7
								
							
						
					
					
						commit
						6061937996
					
				
					 2 changed files with 40 additions and 5 deletions
				
			
		|  | @ -1,5 +1,5 @@ | |||
| import { Signins, UserProfiles, Users } from '@/models/index.js'; | ||||
| import define from '../../define.js'; | ||||
| import { Users } from '@/models/index.js'; | ||||
| 
 | ||||
| export const meta = { | ||||
| 	tags: ['admin'], | ||||
|  | @ -23,9 +23,12 @@ export const paramDef = { | |||
| 
 | ||||
| // eslint-disable-next-line import/no-default-export
 | ||||
| export default define(meta, paramDef, async (ps, me) => { | ||||
| 	const user = await Users.findOneBy({ id: ps.userId }); | ||||
| 	const [user, profile] = await Promise.all([ | ||||
| 		Users.findOneBy({ id: ps.userId }), | ||||
| 		UserProfiles.findOneBy({ userId: ps.userId }) | ||||
| 	]); | ||||
| 
 | ||||
| 	if (user == null) { | ||||
| 	if (user == null || profile == null) { | ||||
| 		throw new Error('user not found'); | ||||
| 	} | ||||
| 
 | ||||
|  | @ -34,8 +37,37 @@ export default define(meta, paramDef, async (ps, me) => { | |||
| 		throw new Error('cannot show info of admin'); | ||||
| 	} | ||||
| 
 | ||||
| 	if (!_me.isAdmin) { | ||||
| 		return { | ||||
| 		...user, | ||||
| 		token: user.token != null ? '<MASKED>' : user.token, | ||||
| 			isModerator: user.isModerator, | ||||
| 			isSilenced: user.isSilenced, | ||||
| 			isSuspended: user.isSuspended, | ||||
| 		}; | ||||
| 	} | ||||
| 
 | ||||
| 	const maskedKeys = ['accessToken', 'accessTokenSecret', 'refreshToken']; | ||||
| 	Object.keys(profile.integrations).forEach(integration => { | ||||
| 		maskedKeys.forEach(key => profile.integrations[integration][key] = '<MASKED>'); | ||||
| 	}); | ||||
| 
 | ||||
| 	const signins = await Signins.findBy({ userId: user.id }); | ||||
| 
 | ||||
| 	return { | ||||
| 		email: profile.email, | ||||
| 		emailVerified: profile.emailVerified, | ||||
| 		autoAcceptFollowed: profile.autoAcceptFollowed, | ||||
| 		noCrawle: profile.noCrawle, | ||||
| 		alwaysMarkNsfw: profile.alwaysMarkNsfw, | ||||
| 		carefulBot: profile.carefulBot, | ||||
| 		injectFeaturedNote: profile.injectFeaturedNote, | ||||
| 		receiveAnnouncementEmail: profile.receiveAnnouncementEmail, | ||||
| 		integrations: profile.integrations, | ||||
| 		mutedWords: profile.mutedWords, | ||||
| 		mutedInstances: profile.mutedInstances, | ||||
| 		mutingNotificationTypes: profile.mutingNotificationTypes, | ||||
| 		isModerator: user.isModerator, | ||||
| 		isSilenced: user.isSilenced, | ||||
| 		isSuspended: user.isSuspended, | ||||
| 		signins, | ||||
| 	}; | ||||
| }); | ||||
|  |  | |||
|  | @ -54,6 +54,9 @@ | |||
| 				<FormButton v-if="user.host != null" class="_formBlock" @click="updateRemoteUser"><i class="fas fa-sync"></i> {{ $ts.updateRemoteUser }}</FormButton> | ||||
| 			</FormSection> | ||||
| 
 | ||||
| 			<MkObjectView v-if="info && $i.isAdmin" tall :value="info"> | ||||
| 			</MkObjectView> | ||||
| 
 | ||||
| 			<MkObjectView tall :value="user"> | ||||
| 			</MkObjectView> | ||||
| 		</div> | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue