1
0
mirror of https://github.com/bitwarden/directory-connector synced 2026-01-20 09:23:25 +00:00

add support for email coming from username prop (#47)

* add support for email coming from username prop

* feedback adjustments
This commit is contained in:
Kyle Spearrin
2020-06-22 10:28:06 -04:00
committed by GitHub
parent e12c4ea1e2
commit 04e278249e
3 changed files with 26 additions and 4 deletions

2
jslib

Submodule jslib updated: 28d21ca5df...7f6d7424e7

View File

@@ -271,7 +271,8 @@
<small class="text-muted form-text">{{'ex' | i18n}} whenChanged</small>
</div>
</div>
</div>
<div [hidden]="directory != directoryType.Ldap && directory != directoryType.OneLogin">
<div class="form-group">
<div class="form-check">
<input class="form-check-input" type="checkbox" id="useEmailPrefixSuffix"
@@ -281,7 +282,7 @@
</div>
</div>
<div [hidden]="!sync.useEmailPrefixSuffix">
<div class="form-group" [hidden]="ldap.ad">
<div class="form-group" [hidden]="ldap.ad || directory != directoryType.Ldap">
<label for="emailPrefixAttribute">{{'emailPrefixAttribute' | i18n}}</label>
<input type="text" class="form-control" id="emailPrefixAttribute"
name="EmailPrefixAttribute" [(ngModel)]="sync.emailPrefixAttribute">

View File

@@ -12,6 +12,9 @@ import { DirectoryService } from './directory.service';
import { I18nService } from 'jslib/abstractions/i18n.service';
import { LogService } from 'jslib/abstractions/log.service';
// Basic email validation: something@something.something
const ValidEmailRegex = /^\S+@\S+\.\S+$/;
export class OneLoginDirectoryService extends BaseDirectoryService implements DirectoryService {
private dirConfig: OneLoginConfiguration;
private syncConfig: SyncConfiguration;
@@ -82,9 +85,23 @@ export class OneLoginDirectoryService extends BaseDirectoryService implements Di
const entry = new UserEntry();
entry.externalId = user.id;
entry.referenceId = user.id;
entry.email = user.email != null ? user.email.trim().toLowerCase() : null;
entry.deleted = false;
entry.disabled = user.status === 2;
entry.email = user.email;
const emailInvalid = (ue: UserEntry) => ue.email == null || ue.email === '';
if (emailInvalid(entry) && user.username != null && user.username !== '') {
if (this.validEmailAddress(user.username)) {
entry.email = user.username;
} else if (this.syncConfig.useEmailPrefixSuffix && this.syncConfig.emailSuffix != null) {
entry.email = user.username + this.syncConfig.emailSuffix;
}
}
if (entry.email != null) {
entry.email = entry.email.trim().toLowerCase();
}
if (emailInvalid(entry) || !this.validEmailAddress(entry.email)) {
return null;
}
return entry;
}
@@ -173,4 +190,8 @@ export class OneLoginDirectoryService extends BaseDirectoryService implements Di
}
return this.apiGetMany(response.pagination.next_link, currentData);
}
private validEmailAddress(email: string) {
return ValidEmailRegex.test(email);
}
}