| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.Linq.Expressions;
 
- namespace InABox.Core
 
- {
 
-     public class LoginCount : CoreAggregate<User, Login, Guid>
 
-     {
 
-         public override Expression<Func<Login, Guid>> Aggregate => x => x.ID;
 
-         //public Expression<Func<Login, Guid>> Link => x => x.User.ID;
 
-         public override AggregateCalculation Calculation => AggregateCalculation.Count;
 
-         public override Dictionary<Expression<Func<Login, object>>, Expression<Func<User, object>>> Links =>
 
-             new Dictionary<Expression<Func<Login, object>>, Expression<Func<User, object>>>
 
-             {
 
-                 { Login => Login.User.ID, User => User.ID }
 
-             };
 
-     }
 
-     public enum EmailType
 
-     {
 
-         None,
 
-         Exchange,
 
-         IMAP
 
-     }
 
-     public enum TwoFactorAuthenticationType
 
-     {
 
-         Email,
 
-         SMS,
 
-         GoogleAuthenticator
 
-     }
 
-     [UserTracking("Core Functionality")]
 
-     public class User : Entity, IPersistent, IRemotable, IOneToMany<SecurityGroup>, ILicense<CoreLicense>
 
-     {
 
-         [EditorSequence(1)]
 
-         [UniqueCodeEditor(Visible = Visible.Default, Editable = Editable.Enabled)]
 
-         public virtual string UserID { get; set; }
 
-         [EditorSequence(2)]
 
-         [PasswordEditor(Visible = Visible.Hidden, Editable = Editable.Enabled, ViewButtonVisible = true)]
 
-         public virtual string Password { get; set; }
 
-         // Please note: this is a UTC time.
 
-         [NullEditor]
 
-         public DateTime PasswordExpiration { get; set; }
 
-         [EditorSequence(3)]
 
-         [TextBoxEditor(Visible = Visible.Default)]
 
-         public string Description { get; set; }
 
-         [EditorSequence(4)]
 
-         [Caption("Network ID")]
 
-         public string NetworkID { get; set; }
 
-         [EditorSequence(5)]
 
-         [PINEditor(Visible = Visible.Default)]
 
-         public string PIN { get; set; }
 
-         [EditorSequence(6)]
 
-         public SecurityGroupLink SecurityGroup { get; set; }
 
-         [EditorSequence(7)]
 
-         [CheckBoxEditor(Visible = Visible.Default)]
 
-         public bool Disabled { get; set; }
 
-         public UserPlatform Platform { get; set; }
 
-         [EditorSequence("2FA", 1)]
 
-         [CheckBoxEditor]
 
-         public bool Use2FA { get; set; }
 
-         [EditorSequence("2FA", 2)]
 
-         [EnumLookupEditor(typeof(TwoFactorAuthenticationType))]
 
-         [Caption("Type")]
 
-         public TwoFactorAuthenticationType TwoFactorAuthenticationType { get; set; }
 
-         [NullEditor]
 
-         public byte[] AuthenticatorToken { get; set; }
 
-         [EditorSequence("2FA", 3)]
 
-         [TextBoxEditor]
 
-         [Caption("Address")]
 
-         public string Recipient2FA { get; set; }
 
-         [EditorSequence("Email Settings", 1)]
 
-         [EnumLookupEditor(typeof(EmailType), Visible = Visible.Hidden)]
 
-         public EmailType EmailType { get; set; }
 
-         [EditorSequence("Email Settings", 2)]
 
-         [TextBoxEditor(Visible = Visible.Hidden)]
 
-         public string EmailHost { get; set; }
 
-         [EditorSequence("Email Settings", 3)]
 
-         [IntegerEditor(Visible = Visible.Hidden)]
 
-         public int EmailPort { get; set; }
 
-         [EditorSequence("Email Settings", 4)]
 
-         [TextBoxEditor(Visible = Visible.Hidden)]
 
-         public string EmailDomain { get; set; }
 
-         [EditorSequence("Email Settings", 6)]
 
-         [TextBoxEditor(Visible = Visible.Default)]
 
-         public string EmailAddress { get; set; }
 
-         [EditorSequence("Email Settings", 7)]
 
-         [TextBoxEditor(Visible = Visible.Hidden)]
 
-         public string EmailUserID { get; set; }
 
-         [EditorSequence("Email Settings", 8)]
 
-         [PasswordEditor(Visible = Visible.Hidden)]
 
-         public string EmailPassword { get; set; }
 
-         [EditorSequence("Email Settings", 9)]
 
-         [TextBoxEditor(Visible = Visible.Hidden)]
 
-         public string SMTPHost { get; set; }
 
-         [EditorSequence("Email Settings", 10)]
 
-         [IntegerEditor(Visible = Visible.Hidden)]
 
-         public int SMPTPort { get; set; }
 
-         [EditorSequence("Email Settings", 11)]
 
-         [TextBoxEditor(Visible = Visible.Hidden)]
 
-         public string SMTPUserName { get; set; }
 
-         [EditorSequence("Email Settings", 12)]
 
-         [PasswordEditor(Visible = Visible.Hidden)]
 
-         public string SMTPPassword { get; set; }
 
-         [Aggregate(typeof(LoginCount))]
 
-         [NullEditor]
 
-         public int Logins { get; set; }
 
-         protected override void Init()
 
-         {
 
-             base.Init();
 
-             SecurityGroup = new SecurityGroupLink();
 
-             Platform = new UserPlatform();
 
-         }
 
-         public override string ToString()
 
-         {
 
-             return UserID;
 
-         }
 
-         public static byte[] GenerateAuthenticationToken()
 
-         {
 
-             var random = new Random(DateTime.Now.Millisecond);
 
-             var bytes = new byte[64];
 
-             random.NextBytes(bytes);
 
-             return bytes;
 
-         }
 
-     }
 
- }
 
 
  |