...

Как можно получить логин пользователя?

Тема в разделе "Вопросы по платформе", создана пользователем kvinokurov, 26 ноя 2022.

Метки:
  1. kvinokurov

    kvinokurov Участник

    Доброго времени суток!
    В поле приложения заполнен пользователь. Собственно по его id делаю запрос в системную коллекцию
    Код:
    
    const user await System.users.search()
            .
    where(
                (
    fg) =>
                    
    g.and(
                        
    f.__deletedAt.eq(null),
                        
    f.__id.eq(userFieldValue.id)
                    )
            )
            .
    first();
    Получаю объект и там поля логин не вижу. Может он как-то по-другому называется? Через UI в консоле разработчика возвращается в форму json, где логин есть.
    P.S. настроена интеграция elma365 с MS AD
  2. tanasenko

    tanasenko Техническая поддержка

    Добрый день!
    Для получения логина пользователя необходимо обратиться к полю login, оно не отображается в меню, но существует.
    Пример:
    Код:
    
    let user await System.users.getCurrentUser();
    if (
    user.data.login){
            
    Context.data.login user.data.login
    }
    Где Context.data.login - тип Строка.
    [​IMG]
  3. kvinokurov

    kvinokurov Участник

    Ок, а как быть в случае поиска пользователя по логину?
    В моем коде пишу
    f.login.eq("user login")
    eq - подсвечивается ошибкой. Я пока не пробовал это выполнять, будет ли работать этот код после публикации рабочего процесса...
  4. kvinokurov

    kvinokurov Участник

    Опытным путем выяснил, что вот так получилось получить пользователя по логину:
    Код:
    
    const user await System.users.search()
            .
    where(
                (
    fg) =>
                    
    g.and(
                        
    f.__deletedAt.eq(null),
                        (
    f.login as StringFieldOperand<string>).eq(login)
                    )
            )
            .
    first();
    P.S. небольшое отступление - .eq() ищет с учетом регистра :( like - работает, но может захватить что-то лишнее... беда :(
    Код:
    
    let user await System.users.getCurrentUser();
    if (
    user.data.login){
            
    Context.data.login user.data.login
    }
    Да, работает, только редактор кода в рабочем процессе не дает это сделать - ругается при публикации на ".login". Пришлось его обманывать:
    Код:
    
    const userLogin Object.getOwnPropertyNames(user.data).indexOf('login') != -? (user.data as any).login as string undefined undefined;