LDAP + Имя и Отчество в поле Имя
При настройках интеграции с LDAP зачастую получается ситуация, что Имя и Отчество пользователя при импорте в ELMA записывается в поле Имя, а поле Отчество остается пустым.
Для решения данной проблемы необходимо в глобальный модуль добавить следующий listener, который будет корректировать данную проблему при добавлении нового пользователя из LDAP:
using EleWise.ELMA.ComponentModel;
using EleWise.ELMA.Runtime.NH.Listeners;
using NHibernate.Event;
using EleWise.ELMA.Security.Models;
namespace MyGlobalModule
{
[Component]
public class UserListener : EntityEventsListener
{
public override bool OnPreInsert(PreInsertEvent @event)
{
var user = @event.Entity as IUser;
if (user != null && !string.IsNullOrEmpty(user.FirstName))
{
var gn = user.FirstName.Split(' ');
if (gn.Length > 1 && string.IsNullOrEmpty(user.MiddleName))
{
user.FirstName = gn[0];
user.MiddleName = gn[1];
}
}
return base.OnPreInsert(@event);
}
public override bool OnPreUpdate(PreUpdateEvent @event)
{
var user = @event.Entity as IUser;
if (user != null && !string.IsNullOrEmpty(user.FirstName))
{
// Fix обновления из LDAP
var gn = user.FirstName.Split(' ');
if (gn.Length > 1)
{
user.FirstName = gn[0];
if (string.IsNullOrEmpty(user.MiddleName))
user.MiddleName = gn[1];
}
}
return base.OnPreUpdate(@event);
}
}
}