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); }
}
}
}