public async Task <Tuple <bool, string> > CreateUserExtensionPropertyForAnApplication(ActiveDirectoryClient azureGraphclient, string AppName, string AppExtAttribName)
        {
            bool   ActionStatus = false;
            string message      = string.Empty;

            if (azureGraphclient == null || string.IsNullOrEmpty(AppName) || string.IsNullOrEmpty(AppExtAttribName))
            {
                return(new Tuple <bool, string>(ActionStatus, "Invalid input"));
            }
            else
            {
                try
                {
                    //get instance of extension attribute
                    var appi = azureGraphclient.Applications.Where(s => s.DisplayName == AppName).ExecuteAsync().Result.CurrentPage.FirstOrDefault();
                    if (appi != null)
                    {
                        var exts = azureGraphclient.Applications[appi.ObjectId].ExtensionProperties.ExecuteAsync().Result.EnumerateAllAsync().Result;
                        //var appexts = ((Application)appi).ExtensionProperties;

                        IExtensionProperty extAttrib = exts.Where(a => a.Name == AppExtAttribName).FirstOrDefault();

                        if (extAttrib == null)
                        {
                            ExtensionProperty newAttrib = new ExtensionProperty
                            {
                                Name          = AppExtAttribName,
                                DataType      = "String",
                                TargetObjects = { "User" }
                            };

                            ((Application)appi).ExtensionProperties.Add(newAttrib);
                            await((Application)appi).UpdateAsync();

                            ActionStatus = true;
                            message      = "Successfully created application extension property";
                        }
                        else
                        {
                            message = "Attribute already associated with application";
                        }
                    }
                    else
                    {
                        message = "Invalid application";
                    }
                }
                catch (Exception ex)
                {
                    message = ex.Message + (ex.InnerException != null ? Environment.NewLine + ex.InnerException.Message : "");
                }
            }

            return(new Tuple <bool, string>(ActionStatus, message));
        }
Exemple #2
0
 public UndefinedPropertyException(IExtensionProperty property)
     : base($"Undefined {property.Name}.")
 {
 }
        public async Task <Tuple <bool, string, string, string, string> > AssignExtensionAttributeToUser(ActiveDirectoryClient azureGraphclient, string UserEmailAddress, string AppName,
                                                                                                         string AppExtAttribName, string ExtAttribValue)
        {
            Guid userObjectID = Guid.Empty, approleid = Guid.Empty, srvpr = Guid.Empty;

            bool   ActionStatus = false;
            string message      = string.Empty;

            if (azureGraphclient == null || string.IsNullOrEmpty(AppName) || string.IsNullOrEmpty(AppExtAttribName) || string.IsNullOrEmpty(ExtAttribValue))
            {
                return(new Tuple <bool, string, string, string, string>(ActionStatus, "Invalid input", null, null, null));
            }
            else
            {
                try
                {
                    //get instance of extension attribute
                    var appi = azureGraphclient.Applications.Where(s => s.DisplayName == AppName).ExecuteAsync().Result.CurrentPage.FirstOrDefault();
                    if (appi != null)
                    {
                        var exts = azureGraphclient.Applications[appi.ObjectId].ExtensionProperties.ExecuteAsync().Result.EnumerateAllAsync().Result;
                        //var appexts = ((Application)appi).ExtensionProperties;

                        IExtensionProperty extAttrib = exts.Where(a => a.Name == AppExtAttribName).FirstOrDefault();

                        if (extAttrib != null)
                        {
                            Microsoft.Azure.ActiveDirectory.GraphClient.User userInstance = (Microsoft.Azure.ActiveDirectory.GraphClient.User)
                                                                                            azureGraphclient.Users.Where(a => a.Mail.Equals(UserEmailAddress, StringComparison.InvariantCultureIgnoreCase) ||
                                                                                                                         a.UserPrincipalName.Equals(UserEmailAddress, StringComparison.InvariantCultureIgnoreCase)).ExecuteAsync().Result.CurrentPage.FirstOrDefault();
                            if (userInstance != null)
                            {
                                userInstance.SetExtendedProperty(AppExtAttribName, ExtAttribValue);
                                await userInstance.UpdateAsync();

                                userInstance.GetContext().SaveChanges();

                                ActionStatus = true;
                                message      = "Successfully assigned application extension property to user";
                            }
                            else
                            {
                                message = "Invalid user";
                            }
                        }
                        else
                        {
                            message = "Attribute name not associated with application";
                        }
                    }
                    else
                    {
                        message = "Invalid application";
                    }
                }
                catch (Exception ex)
                {
                    message = ex.Message + (ex.InnerException != null ? Environment.NewLine + ex.InnerException.Message : "");
                }
            }

            return(new Tuple <bool, string, string, string, string>(ActionStatus, message, userObjectID.ToString(), approleid.ToString(), srvpr.ToString()));
        }