show gms and humhub menu entries only when activated, double check user with username and email

This commit is contained in:
einhornimmond 2024-05-13 14:36:23 +02:00
parent 0c1b88e9ca
commit 819d095467
5 changed files with 51 additions and 11 deletions

View File

@ -168,7 +168,9 @@ export class UserResolver {
let humhubUserPromise: Promise<IRestResponse<GetUser>> | undefined
const klicktippStatePromise = getKlicktippState(dbUser.emailContact.email)
if (CONFIG.HUMHUB_ACTIVE && dbUser.humhubAllowed) {
humhubUserPromise = HumHubClient.getInstance()?.userByUsernameAsync(email)
humhubUserPromise = HumHubClient.getInstance()?.userByUsernameAsync(
dbUser.alias && dbUser.gradidoID,
)
}
if (dbUser.passwordEncryptionType !== PasswordEncryptionType.GRADIDO_ID) {
@ -727,7 +729,10 @@ export class UserResolver {
throw new LogError('cannot create humhub client')
}
const username = dbUser.alias ?? dbUser.gradidoID
const humhubUser = await humhubClient.userByUsername(username)
let humhubUser = await humhubClient.userByUsername(username)
if (!humhubUser) {
humhubUser = await humhubClient.userByEmail(dbUser.emailContact.email)
}
if (!humhubUser) {
throw new LogError("user don't exist (any longer) on humhub")
}

View File

@ -28,7 +28,10 @@ export async function syncHumhub(
return
}
logger.debug('retrieve user from humhub')
const humhubUser = await humhubClient.userByUsername(user.alias ?? user.gradidoID)
let humhubUser = await humhubClient.userByUsername(user.alias ?? user.gradidoID)
if (!humhubUser) {
humhubUser = await humhubClient.userByEmail(user.emailContact.email)
}
const humhubUsers = new Map<string, GetUser>()
if (humhubUser) {
humhubUsers.set(user.emailContact.email, humhubUser)

View File

@ -1,8 +1,12 @@
import { mount } from '@vue/test-utils'
import Sidebar from './Sidebar'
import CONFIG from '../../config'
const localVue = global.localVue
CONFIG.GMS_ACTIVE = 'true'
CONFIG.HUMHUB_ACTIVE = 'true'
describe('Sidebar', () => {
let wrapper

View File

@ -28,11 +28,11 @@
<b-img src="/img/svg/info.svg" height="20" class="svg-icon" />
<span class="ml-2">{{ $t('navigation.info') }}</span>
</b-nav-item>
<b-nav-item to="/circles" class="mb-3" active-class="activeRoute">
<b-nav-item to="/circles" :class="humhubClass" active-class="activeRoute">
<b-img src="/img/svg/circles.svg" height="20" class="svg-icon" />
<span class="ml-2">{{ $t('navigation.circles') }}</span>
</b-nav-item>
<b-nav-item to="/usersearch" active-class="activeRoute">
<b-nav-item to="/usersearch" :class="GMSClass" active-class="activeRoute">
<b-img src="/img/loupe.png" height="20" />
<span class="ml-2">{{ $t('navigation.usersearch') }}</span>
</b-nav-item>
@ -77,6 +77,8 @@
</div>
</template>
<script>
import CONFIG from '../../config'
export default {
name: 'Sidebar',
props: {
@ -89,6 +91,19 @@ export default {
}
return 'mb-3'
},
humhubClass() {
if (CONFIG.HUMHUB_ACTIVE === 'true') {
return 'mb-3'
} else {
return 'invisible'
}
},
GMSClass() {
if (CONFIG.GMS_ACTIVE !== 'true') {
return 'invisible'
}
return ''
},
},
}
</script>
@ -109,6 +124,9 @@ export default {
filter: brightness(0) invert(0);
}
.invisible {
display: none;
}
#component-sidebar {
min-width: 200px;
}

View File

@ -116,20 +116,19 @@
<div v-if="isGMS" class="mt-3">
<b-row>
<b-col cols="12" md="6" lg="6">
<div class="h3 text-muted">{{ $t('GMS.title') }}</div>
<div class="h3">{{ $t('GMS.title') }}</div>
</b-col>
<b-col cols="12" md="6" lg="6" class="text-right">
<user-settings-switch
@valueChanged="gmsStateSwitch"
:initialValue="$store.state.gmsAllowed"
:attrName="'gmsAllowed'"
:disabled="true"
:enabledText="$t('settings.GMS.enabled')"
:disabledText="$t('settings.GMS.disabled')"
/>
</b-col>
</b-row>
<div class="h4 mt-3 text-muted">{{ $t('GMS.desc') }}</div>
<div class="h4 mt-3">{{ $t('GMS.desc') }}</div>
<div v-if="gmsAllowed">
<b-row class="mb-4">
<b-col cols="12" md="6" lg="6">
@ -161,6 +160,17 @@
</b-row>
</div>
</div>
<div v-else>
<b-row>
<b-col cols="12" md="6" lg="6">
<div class="h3 text-muted">{{ $t('GMS.title') }}</div>
</b-col>
<b-col cols="12" md="6" lg="6" class="text-right">
<user-settings-switch :disabled="true" />
</b-col>
</b-row>
<div class="h4 mt-3 text-muted">{{ $t('GMS.desc') }}</div>
</div>
</b-tab>
</div>
</b-tabs>
@ -241,16 +251,16 @@ export default {
return firstName === this.firstName && lastName === this.lastName
},
isHumhubActivated() {
return this.humhubAllowed
return this.humhubAllowed === true
},
isCommunityService() {
return this.isGMS || this.isHumhub
},
isGMS() {
return CONFIG.GMS_ACTIVE
return CONFIG.GMS_ACTIVE === 'true'
},
isHumhub() {
return CONFIG.HUMHUB_ACTIVE
return CONFIG.HUMHUB_ACTIVE === 'true'
},
},
// TODO: watch: {