public static UserAccessRules GetUserRights(UserAccessRights accessLevel)
        {
            var rules = new UserAccessRules();

            switch (accessLevel)
            {
            case UserAccessRights.Technician:
                rules.AllowAction(UserActions.InspectDevices);
                rules.AllowAction(UserActions.AddDevice);
                rules.AllowAction(UserActions.RemoveDevice);
                rules.AllowAction(UserActions.InspectCertificates);
                break;

            case UserAccessRights.Administrator:
                rules.AllowAction(UserActions.InspectDevices);
                rules.AllowAction(UserActions.AddDevice);
                rules.AllowAction(UserActions.RemoveDevice);

                rules.AllowAction(UserActions.InspectCertificates);

                rules.AllowAction(UserActions.InspectUsers);
                break;

            case UserAccessRights.Superuser:
                rules.AllowEverything();
                break;
            }

            return(rules);
        }
 public User(string firstName, string lastName, string email, string agency, string password, string salt,
             string application, string role, string adminToken, UserAccessRules userAccessRules,
             object additional)
 {
     Email                = email.ToLowerInvariant();
     First                = firstName;
     Last                 = lastName;
     Agency               = agency;
     Password             = password;
     Salt                 = salt;
     Application          = application;
     Role                 = role == null ? "" : role.ToLowerInvariant();
     Approved             = false;
     Active               = true;
     Token                = Guid.NewGuid();
     ExpirationDateTicks  = DateTime.UtcNow.AddMonths(1).Ticks;
     AdminToken           = adminToken;
     UserId               = Guid.NewGuid();
     AccessRules          = userAccessRules ?? new UserAccessRules();
     AdditionalSerialized = Newtonsoft.Json.JsonConvert.SerializeObject(additional);
 }