/// <summary> /// Set user manager. /// </summary> /// <param name="userPrincipalName">User UPN.</param> /// <param name="managerUserPrincipalName">Manager UPN.</param> /// <param name="strErrors">Error return value.</param> /// <returns>set object</returns> public bool SetUserManager(string userPrincipalName, string managerUserPrincipalName, ref string strErrors) { // construct URI, method, and managerLink string updateManagerURI = this.graphCall.BaseGraphUri + "/users/" + userPrincipalName + "/$links/manager?" + this.graphCall.ApiVersion; urlLink managerlink = new urlLink(); string method; if (managerUserPrincipalName != "NO MANAGER") { AadUser manager = this.graphCall.getUser(managerUserPrincipalName, ref strErrors); if (manager == null) { return(false); } managerlink.url = this.graphCall.BaseGraphUri + "/directoryObjects/" + manager.objectId; method = "PUT"; } else { managerlink.url = null; method = "DELETE"; } return(this.graphCall.updateLink(updateManagerURI, method, managerlink, ref strErrors)); }
/// <summary> /// get users manager /// </summary> /// <param name="strUpn">user UPN</param> /// <returns>manager UPN</returns> public string GetUsersManager(string strUpn) { string strErrors = string.Empty; AadUser manager = this.graphCall.GetUsersManager(strUpn, ref strErrors); if (manager != null) { return(manager.userPrincipalName); } else { return("NO MANAGER"); } }
/// <summary> /// Create user (including extension attributes). Foreach loop adds extension properties to object before calling CreateUserJSON. /// </summary> /// <param name="user">User object containing values to be set on new object.</param> /// <param name="strErrors">Error return value.</param> /// <returns>created user</returns> public JObject CreateUser(JObject user, ref string strErrors) { // setup AadUser with standard attributes, accountEnabled, and password profile AadUser aadUser = new AadUser(); aadUser.userPrincipalName = (string)user["userPrincipalName"]; aadUser.displayName = (string)user["displayName"]; aadUser.mailNickname = (string)user["mailNickname"]; aadUser.jobTitle = (string)user["jobTitle"]; aadUser.passwordProfile = new passwordProfile(); aadUser.accountEnabled = true; aadUser.passwordProfile.forceChangePasswordNextLogin = true; aadUser.passwordProfile.password = "******"; // convert to JObject JsonSerializerSettings jsonSettings = new JsonSerializerSettings(); jsonSettings.NullValueHandling = NullValueHandling.Ignore; jsonSettings.DefaultValueHandling = DefaultValueHandling.Ignore; JsonSerializer serializer = JsonSerializer.CreateDefault(jsonSettings); JObject newUser = JObject.FromObject(aadUser, serializer); // add supported extension values foreach (JProperty property in user.Properties()) { // exclude unsupported attributes added by application logic if (property.Name == "isManager" || property.Name == "managerUserPrincipalName") { // skip } else if (property.Name.StartsWith(DirectoryExtensions.ExtensionPropertyPrefix)) { newUser[property.Name] = property.Value; } } // create user newUser = this.graphCall.CreateUserJSON(newUser, ref strErrors); // set manager if (newUser != null) { newUser["managerUserPrincipalName"] = user["managerUserPrincipalName"]; newUser = this.SetUser(newUser, ref strErrors); } return(newUser); }
public async Task <AadUser> UpdateUserAsync(AadUser u) { await _repo.UpdateUserAsync(new AadUserEntity(u.TenantId, u.NameIdentifier, u.Upn)); return(u); }