Apigateway/LdapLoginLib/Models/UserInfo.cs
2024-03-13 15:22:06 -05:00

155 lines
4.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LdapLoginLib.Models
{
public class UserInfo
{
#region Propiedades
/// <summary>
/// {Uid} Uid - Nombre de usuario o Login
/// </summary>
/// <remarks>
/// xxx
/// </remarks>
public string? Usuario { get; set; }
/// <summary>
/// {EmployeeNumber} Documento de identidad.
/// </summary>
/// <remarks>
/// Cadena de caracteres, sólo números y letras en
/// maýuscula, sin espacios, sin ceros al inicio.Con
/// la consolidación de identidades, este atributo
/// queda ÚNICO en el directorio a nivel nacional.
/// Puede contener un guion y un dígito
/// consecutivo que asociado en las cuentas hijas
/// de un usuario. La cuenta principal no tendrá este sufijo
/// </remarks>
public string? NumeroDocumento { get; set; }
/// <summary>
/// {Cn} Nombres y apellidos completos
/// </summary>
/// <remarks>
/// Cadena de caracteres, cada palabra con mayúscula inicial
/// </remarks>
public string? NombreCompleto { get; set; }
/// <summary>
/// {GivenName} Nombres completos
/// </summary>
/// <remarks>
/// Cadena de caracteres, cada palabra con mayúscula inicial
/// </remarks>
public string? Nombres { get; set; }
/// <summary>
/// {Sn} Apellidos completos
/// </summary>
/// <remarks>
/// Cadena de caracteres, cada palabra con mayúscula inicia
/// </remarks>
public string? Apellidos { get; set; }
/// <summary>
/// {Mail} Dirección de correo UNAL
/// </summary>
/// <remarks>
/// Cadena de caracteres en minúscula, uid+"@unal.edu.co"
/// </remarks>
public string? Correo { get; set; }
/// <summary>
/// {MailAlternateAddress} Correo alterno
/// </summary>
public string? CorreoAlt { get; set; }
/// <summary>
/// {O} Sede
/// </summary>
/// <remarks>
/// Cadena de caracteres, según tabla 11.1
/// </remarks>
public string? Sede { get; set; }
/// <summary>
/// {inetUserStatus} Estado identidad
/// </summary>
/// <remarks>
/// Active / Inactive, uso propio del directorio.
/// A diferencia del campo nsAccountLock este
/// campo es informativo.Anteriormente usado
/// en la suite de servicio de correo Sun JES.
/// </remarks>
public string? Estado { get; set; }
/// <summary>
/// {IsActive}
/// Indica el estado, si esta activo o inactivo
/// </summary>
public bool Activo { get; set; }
#endregion
public static explicit operator UserInfo(LdapUserInfo userInfo)
{
//if (userInfo == null) throw new Exception();
return new UserInfo
{
Usuario = userInfo.Uid,
NumeroDocumento = userInfo.EmployeeNumber,
NombreCompleto = userInfo.Cn,
Nombres = userInfo.GivenName,
Apellidos = userInfo.Sn,
Correo = userInfo.Mail,
CorreoAlt = userInfo.MailAlternateAddress,
Sede = userInfo.O,
Estado = userInfo.InetUserStatus,
Activo = userInfo.IsActive ?? false
};
}
}
/********************************************
* *
* Discared / not in used *
* *
********************************************
/// <summary>
/// {EmployeeType} Tipos de cuentas en LDAP
/// </summary>
/// <remarks>
/// Ver tabla 4.3, pagina 12 - Lineamientos Identidad
/// </remarks>
//public string? TipoUsuario { get; set; }
/// <summary>
/// {EmployeeNumber} xxxxxxxxx
/// </summary>
/// <remarks>
/// xxx
/// </remarks>
// Definidos por LDAP
// No encontrado
/// <summary>
/// Numero unico identificacion personal
/// </summary>
//public string? NUIP { get; set; } = null;
********************************************
* *
********************************************/
}