/// <summary> /// Create a new Aneka cloud/master user for a specific cloud /// </summary> /// <param name="cloudUserAccount">The new account information to add</param> /// <param name="cloudID">The cloud ID to add this user to</param> public void createNewUser(CloudUserAccount cloudUserAccount, int cloudID) { // Check to see if a non-empty username was specified if (string.IsNullOrEmpty(cloudUserAccount.Username) == true) { throw new Exception("Invalid User Name: The user name cannot be empty or contain only white-spaces"); } // Validate password if (cloudUserAccount.Password.Length < 6) { throw new Exception("Invalid Password: The password must be at least six characters long"); } List<string> groups = new List<string>(); // [DK] NOTE: Do we need to have a selection list of // groups in this form? UserCredentials credentials = new UserCredentials(cloudUserAccount.Username, cloudUserAccount.Password, cloudUserAccount.Username, cloudUserAccount.useThisAccountForReporting ? "This account will be used for reporting" : "Normal account", groups); securityManager.CreateUser(credentials); CloudUserAccount CloudUserAccountfromDB = db.CloudUserAccounts.Find(cloudUserAccount.CloudUserAccountId); Cloud cloudFromDB = db.Clouds.Find(cloudID); CloudUserAccountfromDB.Clouds.Add(cloudFromDB); db.SaveChanges(); }
public ActionResult CreatePost(CloudUserAccount clouduseraccount, bool useThisAccountForReporting, int?[] CloudsList) { if (ModelState.IsValid) { clouduseraccount.useThisAccountForReporting = useThisAccountForReporting; db.CloudUserAccounts.Add(clouduseraccount); db.SaveChanges(); if (CloudsList != null) { clouduseraccount.Clouds = new List<Cloud>(); foreach(var cloudID in CloudsList) { try { var cloud = db.Clouds.Find(cloudID); //Save the user to the cloud ContainersManagement containersManagement = new ContainersManagement(); Machine machine = containersManagement.machineLookupFromMasterId(cloud.Master.MasterId); Uri masterUri = new Uri(ContainersManagement.GetContainerUri(machine.IP, cloud.Master.Port)); global::Aneka.Security.UserCredentials adminLogin = new global::Aneka.Security.UserCredentials("Administrator", String.Empty); AnekaUsersManagement anekaUsersManagement = new AnekaUsersManagement(masterUri, adminLogin); anekaUsersManagement.createNewUser(clouduseraccount, cloud.CloudId); //clouduseraccount.Clouds.Add(cloud); //db.SaveChanges(); } catch (Exception) { continue; } } } return RedirectToAction("Dashboard", "Home"); } return View("~/Views/Home/Dashboard.cshtml",clouduseraccount); }
public ActionResult EditPost(CloudUserAccount clouduseraccount,bool useThisAccountForReporting, int?[] CloudsList) { if (ModelState.IsValid) { clouduseraccount.useThisAccountForReporting = useThisAccountForReporting; db.Entry(clouduseraccount).State = EntityState.Modified; db.SaveChanges(); //Clouds List var clouduseraccount2 = db.CloudUserAccounts.Include(x => x.Clouds).Where(x => x.CloudUserAccountId == clouduseraccount.CloudUserAccountId).First(); if (clouduseraccount2.Clouds == null) clouduseraccount2.Clouds = new List<Cloud>(); foreach (var user in db.Clouds.ToList()) clouduseraccount2.Clouds.Remove(user); db.SaveChanges(); if (CloudsList != null) { foreach (int cloudID in CloudsList) { var user = db.Clouds.Find(cloudID); clouduseraccount2.Clouds.Add(user); } db.SaveChanges(); } return RedirectToAction("Dashboard", "Home"); } return View("~/Views/Home/Dashboard.cshtml",clouduseraccount); }