Перейти к основному контенту

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);
        }
    }
}