slice first_name and last_name after 20 character for humhub

This commit is contained in:
einhornimmond 2025-04-24 16:22:43 +02:00
parent 21be12f3b0
commit c16786cd20
3 changed files with 34 additions and 4 deletions

View File

@ -1,4 +1,7 @@
/* eslint-disable prettier/prettier */
// eslint-disable-next-line import/no-unassigned-import
import 'reflect-metadata'
import { PublishNameType } from '@/graphql/enum/PublishNameType'
import { communityDbUser } from '@/util/communityUser'
import { isHumhubUserIdenticalToDbUser } from './compareHumhubUserDbUser'
@ -13,6 +16,7 @@ describe('isHumhubUserIdenticalToDbUser', () => {
defaultUser.alias = 'alias'
defaultUser.emailContact.email = 'email@gmail.com'
defaultUser.language = 'en'
defaultUser.gradidoID = 'gradidoID'
})
it('Should return true because humhubUser was created from entity user', () => {
@ -21,6 +25,20 @@ describe('isHumhubUserIdenticalToDbUser', () => {
expect(result).toBe(true)
})
it('Should return false, because last name differ because of publish name type', () => {
const humhubUser = new GetUser(defaultUser, 1)
defaultUser.humhubPublishName = PublishNameType.PUBLISH_NAME_FIRST
const result = isHumhubUserIdenticalToDbUser(humhubUser, defaultUser)
expect(result).toBe(false)
})
it('Should return true, even if alias is empty', () => {
defaultUser.alias = ''
const humhubUser = new GetUser(defaultUser, 1)
const result = isHumhubUserIdenticalToDbUser(humhubUser, defaultUser)
expect(result).toBe(true)
})
it('Should return false because first name differ', () => {
const humhubUser = new GetUser(defaultUser, 1)
humhubUser.profile.firstname = 'changed first name'

View File

@ -22,6 +22,10 @@ function isValid(postUser: PostUser, userId: number): boolean {
logger.error('firstname too long for humhub, for user with id:', userId)
return false
}
if (postUser.profile.lastname.length > 20) {
logger.error('lastname too long for humhub, for user with id:', userId)
return false
}
return true
}

View File

@ -35,12 +35,16 @@ export class PublishNameLogic {
* @returns user.firstName for PUBLISH_NAME_FIRST, PUBLISH_NAME_FIRST_INITIAL or PUBLISH_NAME_FULL
*/
public getFirstName(publishNameType: PublishNameType): string {
let firstName = ''
if (this.user && typeof this.user.firstName === 'string') {
firstName = this.user.firstName
}
return [
PublishNameType.PUBLISH_NAME_FIRST,
PublishNameType.PUBLISH_NAME_FIRST_INITIAL,
PublishNameType.PUBLISH_NAME_FULL,
].includes(publishNameType)
? this.user.firstName
? firstName.slice(0, 20)
: ''
}
@ -51,10 +55,14 @@ export class PublishNameLogic {
* first initial from user.lastName for PUBLISH_NAME_FIRST_INITIAL
*/
public getLastName(publishNameType: PublishNameType): string {
let lastName = ''
if (this.user && typeof this.user.lastName === 'string') {
lastName = this.user.lastName
}
return publishNameType === PublishNameType.PUBLISH_NAME_FULL
? this.user.lastName
: publishNameType === PublishNameType.PUBLISH_NAME_FIRST_INITIAL
? this.user.lastName.charAt(0)
? lastName.slice(0, 20)
: publishNameType === PublishNameType.PUBLISH_NAME_FIRST_INITIAL && lastName.length > 0
? lastName.charAt(0)
: ''
}