namespace WorkflowActivity.Scripting.SDKScriptAddUser { using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Runtime; using System.Text; using Laserfiche.LicenseManager.LMO; /// /// Provides one or more methods that can be run when the workflow scripting activity is performed. /// public class Script1 : RAScriptClass110 { public static IdentityProvider GetIDprovider(Database db, String providername) { List registeredIPs = db.GetAllIdentityProviders(); foreach (IdentityProvider idp in registeredIPs) { if (idp.Name == providername) return idp; } return null; } public static Group GetGroupSID(Database db, String groupname) { foreach (Group grp in db.GetAllGroups()) { if (grp.Name == groupname ) return grp; } return null; } /// protected override void Execute() { Guid educlicense = new Guid("2475efc5-f423-6c50-51da-0d7d7f9fe3d8"); // Educational User License string tokServerName = ""; string tokDatabaseName = "LFDS_DatabaseName"; string tokIdentityProvider = "Azure"; string tokGroupName = ""; string tokUniqueAttribute = GetTokenValue("Variables_EmailAddress").ToString(); string tokUserName = GetTokenValue("Variables_UniqueUserID").ToString(); try { // Write your code here. The BoundEntryInfo property will access the entry, RASession will get the Repository Access session using (Server server = Server.Connect(tokServerName, false)) // Link to LFDS Server { Database lfdsdb = server.GetDatabaseByRealmName(tokDatabaseName); // Link to LFDS Database //lfdsdb.LoginWindows(); // If the workflow server account cannot access LFDS then a username and password will be required lfdsdb.LoginWindows("",""); string RootContainer = lfdsdb.GetRootContainer().Name; // Register a SAML User which is subclass of User SamlUser newUser = SamlUser.Create(lfdsdb); newUser.IdentityProviderID = GetIDprovider(lfdsdb, tokIdentityProvider).ID; newUser.SamlNameID = tokUniqueAttribute; newUser.Name = tokUserName; newUser.ContainerID = lfdsdb.GetRootContainer().ID; newUser.Licenses = new Guid[1] { educlicense }; newUser.Register(); // Add SAML user registered above to registered group Group obgroup = GetGroupSID(lfdsdb, tokGroupName); // Get group SID // Group obgroup = lfdsdb.GetGroup(grpsid); // Alternative using SID defined above //Add the list of members to the group var obgmembers = new List(); // New member list Dictionary currentMembers = obgroup.GetMembers(); // Get Current Members // Check if new user member not in group if (!currentMembers.ContainsKey(newUser.SIDString)) { // Add all current members to group if(currentMembers.Count > 0) { obgmembers.AddRange(currentMembers.Keys);} // Add new member to group obgmembers.Add(newUser.SIDString); // Set group membership obgroup.SetMembers(obgmembers); obgroup.Update(); } } } catch (Exception e) { WorkflowApi.TrackInformation("Error: " + e); } } } }