public void UserActivationNotActivated() { const string testUserid = "testuser"; var testUser = new AuthUser() { Id = testUserid, ActivationCode = "sasa" }; using (var session = MasterStore.OpenSession()) { session.Store(testUser); session.SaveChanges(); } //ARRANGE var controller = GetAuthenticatedControllerMock<AdministrationController>(Orguser); //set controller context. controller.ControllerContext = new ControllerContext(GetContext(false), new RouteData(), controller); var result = controller.ActivationForEmployee(testUserid); var jsonresponse = ValidateAndUnwrapJsonResult(result); dynamic data = jsonresponse.Data.ToDynamic(); Assert.IsFalse(data.HasActivated); Assert.AreEqual(data.UserId,testUser.Id); Assert.IsNull(jsonresponse.ErrorMessage); }
/// <summary> /// Get AuthUserViewmodel from given AuthUser and User /// </summary> /// <param name="au">AuthUser object</param> /// <param name="ou">Corresponding OrgUser object</param> /// <returns></returns> public static AuthUserViewModel FromUser(AuthUser au, User ou) { if(!au.Id.Equals(ou.Id)) throw new ArgumentException("AuthUser and User have different Ids"); return new AuthUserViewModel { Id = au.Id, ActivationCode = au.ActivationCode, DateOfBirth = ou.DateOfBirth, EmailAddress = ou.EmailAddress, FirstName = ou.FirstName, LastName = ou.LastName, NameIdentifier = au.NameIdentifier, OrgKey = au.OrgKey, PersonnelNumber = ou.PersonnelNumber, Position = ou.Position, }; }
/// <summary> /// A user also is an AuthUser /// </summary> /// <returns></returns> public IAuthUser ToAuthUser() { //else //{ // var UserName = null; //} var authUser= new AuthUser { Id = Id, ActivationCode = Guid.NewGuid().ToString(), OrgKey = OrgKey, UserName = EmailAddress, }; if (EmailAddress != null) { authUser.UserName = EmailAddress; } return authUser; }
public static ExtractedUserData ExtractUserData(string orgKey, string fileData, ref List<string> errorlines, int ignoreLines = 0) { var sr = new StringReader(fileData); string line; //ignore first line(s). for (var i = 0; i < ignoreLines; i++) { sr.ReadLine(); } //parse each line var re = new Regex( @"^(?<personnelnumber>[^\t]+)\t(?<firstname>[^\t]+)\t(?<lastname>[^\t]+)\t(?<position>[^\t]+)\t(?<email>[^\t]*)\t(?<managers>[^\t]*)$"); var orgusers = new Dictionary<string, User>(); var authusers = new Dictionary<string, AuthUser>(); var managers = new Dictionary<string, string>(); while ((line = sr.ReadLine()) != null) { var match = re.Match(line); if (match.Success) { //create new users. var au = new AuthUser { ActivationCode = Guid.NewGuid().ToString(), Id = IlluminateDatabase.GenerateId<AuthUser>(), OrgKey = orgKey }; var ou = new User { Id = au.Id, OrgKey = au.OrgKey, EmailAddress = match.Groups["email"].Captures[0].Value, PersonnelNumber = match.Groups["personnelnumber"].Captures[0].Value, FirstName = match.Groups["firstname"].Captures[0].Value, LastName = match.Groups["lastname"].Captures[0].Value, Position = match.Groups["position"].Captures[0].Value, }; managers.Add(ou.PersonnelNumber, match.Groups["managers"].Captures[0].Value); authusers.Add(ou.PersonnelNumber, au); orgusers.Add(ou.PersonnelNumber, ou); } else { errorlines.Add(line); } } //who can manage others? foreach (var a in managers) { var mlist = a.Value.Replace("\"", String.Empty).Replace(" ", String.Empty).Split(','); //remove " and split on , foreach (var m in mlist) { if (!String.IsNullOrWhiteSpace(m) && orgusers.ContainsKey(m)) //check manager exists in import. { var manager = orgusers[m]; var user = orgusers[a.Key]; //set manager as manager manager.Roles.Add(Role.GetRole(Role.BuiltInRole.Manager)); //add to user's managers. user.AddManager(manager); } } } var ret = new ExtractedUserData {Authusers = authusers, Orgusers = orgusers}; return ret; }
public ActionResult Create(CreateOrganisationViewModel covm) { ViewBag.Modules = Modules; ModelState.Remove("Id"); if (ModelState.IsValid) { DocumentStore ds; //check orgkey is ok. if (MvcApplication.DataBase.GetOrgStore(covm.OrgKey)!=null) { throw new Exception(String.Format("Organisation key {0} already exists", covm.OrgKey)); } var org = Mapper.Map<OrganisationViewModel, Organisation>(covm); org.OrgKey = org.OrgKey.ToLower(); AuthUser authuser; IDocumentStore newOrgStore; //create new org record in master store using (var session = MasterStore.OpenSession()) { org.CreatedOn = DateTime.Now; org.IsLive = true; session.Store(org); session.SaveChanges(); newOrgStore =CreateOrgDatabase(org,session); //create administrator and email authuser = new AuthUser { ActivationCode = Guid.NewGuid().ToString(), Id = IlluminateDatabase.GenerateId<User>(), OrgKey = org.OrgKey }; session.Store(authuser); session.SaveChanges(); } var orgUser = new User { CreatedDate = DateTime.Now, EmailAddress = covm.AdministratorEmail, Id = authuser.Id, FirstName = covm.AdministratorName.Split(' ')[0], LastName = covm.AdministratorName.Split(' ')[1], Roles = { Role.GetRole(Role.BuiltInRole.Administrator), Role.GetRole(Role.BuiltInRole.Manager), Role.GetRole(Role.BuiltInRole.Analytics) }, OrgKey = org.OrgKey }; using (var orgSession = newOrgStore.OpenSession()) { orgSession.Store(orgUser); orgSession.SaveChanges(); } ProvisionNewDatabase(newOrgStore); EmailActivation(authuser, orgUser,newOrgStore); covm = Mapper.Map<Organisation, CreateOrganisationViewModel>(org); } return View("Edit", covm); }
public virtual void EmailActivation(AuthUser au, User ou, IDocumentStore orgStore) { //check not already activated. Work this out from if (String.IsNullOrEmpty(au.ActivationCode)) { throw new Exception("User is already activated"); } var activationurl = String.Format("{0}://{1}/{2}", Request.Url.Scheme, ConfigurationManager.AppSettings["ActivationUrl"], au.ActivationCode); var notification = new Notification { Title = "New Administrator account for Illuminate", Body = Email.GetActivationEmailBody(ou, activationurl,au.ActivationCode,""), Id = IlluminateDatabase.GenerateId<Notification>(), NotificationRecipients = new[] { new NotificationRecipient { Users = new[] {ou.ToSimpleUser()}, NotificationDeliveryTypes = NotificationDeliveryTypes.Email } }, SendDate = DateTime.Now }; using (var session = orgStore.OpenSession()) { session.Store(notification); session.SaveChanges(); } }