teams meeting - How to change guest user role? - microsoft-graph-api

i created a meeting where everyone was the presenter by default,add two users to the meeting (one for the organization and one for the guest)
Now, i want to set the user of the organization as a attendee, and the guest as the presenter
Here is my code, after which everyone becomes a attendee..
var onlineMeeting = new OnlineMeeting
{
AllowedPresenters = OnlineMeetingPresenters.RoleIsPresenter,
Participants = new MeetingParticipants()
{
Attendees = new List<MeetingParticipantInfo>()
}
};
var attendeeList = onlineMeeting.Participants.Attendees.ToList();
attendeeList.Add(new MeetingParticipantInfo
{
Role = OnlineMeetingRole.Attendee,
Identity = new IdentitySet { User = new Identity { Id = "organization user id" } }
});
onlineMeeting.Participants.Attendees = attendeeList;
return await _GraphClient.Users["user id"].OnlineMeetings["meeting id"]
.Request()
.UpdateAsync(onlineMeeting);

You can set the guest user role as presenter by following code
Role = OnlineMeetingRole.Presenter
You can get the id of guest user by following graph API.
https://graph.microsoft.com/v1.0/users/?$filter=userType eq 'guest'
Guest users directly can't be made as presenters without inviting them as Guests into the organization.
Refer to documentation plan-for-teams-live-event
For a guest to present in a meeting, do the following tasks:
Add the user as a guest to a team.
Have the user accept the guest invitation and join the team.
Schedule the live meeting and add the guest to your event group.
Ref Doc:
https://learn.microsoft.com/en-us/graph/api/resources/meetingparticipants?view=graph-rest-1.0
https://learn.microsoft.com/en-us/graph/api/user-get?view=graph-rest-1.0&tabs=http

Related

Removing user from role and checking

I have two roles (freeUser , subscribedUser) and when i try to remove a user from role (subscribed user) using
await UserManager.RemoveFromRoleAsync(subscription.UserId, RoleName.SubscribedUser);
it succesfully delete him from AspNetUserRoles table but when i check again to see if the user is subscribed using
var roles = ((ClaimsIdentity)User.Identity).Claims
.Where(c => c.Type == ClaimTypes.Role)
.Select(c => c.Value);
var enumerable = roles as IList<string> ?? roles.ToList();
or using User.IsInRole(RoleName.SubscribedUser)
it's return ture ! and the user is still in role subscribedUser even that i checked the AspNetUserRoles table and he is delete
Delete your cookies history, check in different browser or re-start the application. Sometimes, session will validate the user even nolonger exists in database.

ASP MVC Identity 2 get user in "User" role

I add user and assign role as below code, I user ASP MVC 5 identity and EF code first.
//some Code
var result = manager.Create(insert, applicationUser.PasswordHash);
IdentityResult result2 =null;
if (result.Succeeded)
{
result2 = manager.AddToRole(insert.Id, "User");
}
//Some Code
So i need to show list of user with custom role in view like "User" role. i wrote this code :
ApplicationDbContext myDbContext = new ApplicationDbContext();
var getRoleId = myDbContext.Roles.Where(r => r.Name == "User").Select(m => m.Id).SingleOrDefault();
var fetch = myDbContext.Users.Where(u => u.Roles.Any(r => r.RoleId.ToString() == getRoleId)).ToList();
return View(fetch);
getRoleId value is "4", it is right , but fetch always count equal 0.I try more than 3 4 hours but i can not get result.Where is my wrong ? and what is the solution ?
Thank you.
UPDATE :
I found my problem in add role but i do not know how can fix that !
When adding the users to roles using the above, the users id is added to the UserId column of the UserRoles table, but there was a third column called IdentityUser_Id which was always null.
Out of curiosity I added my user id to that column as well and now the everything works. the application picked up my user role.
My follow up question to this is can I set the IdentityUser_Id automatically? using something similar to the UserManager.AddToRole() which adds the userId to both columns?
Why are you getting getRowId and not pull Users by Role Name? Try Below:
var fetch = myDbContext.Users.Where(u => u.Roles.Any(r => r.Name ==
"User")).ToList();

GORM using foreign key instead of domain object

Say I have a Domain Object User which contains an Organization field. I can map that using a foreign key and let hibernate take care of the rest like so:
class User {
String id
String firstName
Organization organization
static mapping = {
table 'user'
id column: "user_id", generator:'assigned'
organization column: 'organization_Id'
}
}
class Organization {
String id
String name
String address
static mapping = {
table 'organization'
id column: "organization_id", generator:'assigned'
}
}
This works fine, but when I want to query for all users in an organization I might have to do something like this
String orgId = "some id"
Organization org = Organization.findById(orgId)
List<User> users = User.findAllByOrganization(org)
It would be convenient to not have to pass the Organization domain object and instead just pass the Organization.Id which is the foreign key on the User table.
How I want my code to look is the following:
String orgId = "some id"
List<User> users = User.findAllByOrganization(orgId)
After researching, it seems like this is not possible, I need to first query for the Organization and then use that object. Is there a way I am unaware of?
One way I like to do it is to use a proxy of your domain object instead of a hydrated instance of it. You can use load() to obtain the proxy. This means no database call is made as long as you don't access any of the domain object's properties beyond the id.
def users = Users.findByOrganization(Organization.load(orgId))
You can use a Criteria:
String orgId = "some id"
List<User> users = User.createCriteria().list {
organization {
idEq(orgId)
}
}
You have two options there:
add a redundant orgId field to you User class and use it for the
lookup.
Use a fake object for your lookup:
.
Organization org = new Organization()
org.id = 'someId' // looks strange, but you can not use id inside constructor
def users = Users.findAllByOrganization org

Rails find_or_initialize_by with joins ActiveRecord::AssociationTypeMismatch

I have two models
users (id, name, ...)
authorizations (id, provider, provider_uid, user_id,...)
users has_many authorizations
Now when i have to login via facebook i need to check if the provider_uid is preset if not create a new one.
user = User.joins(:authorizations).find_or_initialize_by(
authorizations: {
provider: 'facebook',
provider_uid: provider_uid
}
)
Error
ActiveRecord::AssociationTypeMismatch - Authorization(#70336918074440)
expected, got Array(#70336893054160):
Try using first_or_initialize instead, both the scenarios are covered below
You can try this if you want to initialize a user object
user = User.joins(:authorizations).where("authorizations.provider = 'facebook' AND authorizations.provider_uid = ?", provider_uid).first_or_initialize
But, if you want to find or create authorization for an existing user, you can do this, you can use first_or_initialize
authorization = Authorization.where(user_id: user_id, provider: 'facebook', provider_uid: provider_uid).first_or_initialize
authorization.save if authorization.new_record?
Hope this helps!

Return unique results when using findAllBy

I have the following method in a service, please note the .user on the def usersByRole line:
def getUsersByRole(String desiredRole1, String desiredRole2, String desiredRole3) {
Role role1 = Role.findByAuthority(desiredRole1)
Role role2 = Role.findByAuthority(desiredRole2)
Role role3 = Role.findByAuthority(desiredRole3)
def usersByRole = UserRole.findAllByRoleInList([role1, role2, role3]).user
return usersByRole
}
It works good, but when a user has multiple roles (i.e. ROLE_ADMIN, and ROLE_OWNER) then that user exists twice in the collection if both of the previously mentioned roles are given as parameters. Is there any clean way I can make the collection contain only unique results?
A similar question as yours can be found here: GORM createCriteria and list do not return the same results : what can I do?
Method 1
If you want to return unique list of users directly from DB query then you can use listDistinct on User (supposing that user has a roles OneToMany association with UserRoles)
User.createCriteria().listDistinct {
roles {
in 'role', [role1, role2, role3]
}
}
Method 2
You can also try to query UserRole directly and group by User using the groupProperty (see http://www.grails.org/doc/latest/ref/Domain%20Classes/createCriteria.html)
Method 3
Remove duplicated users from the returned list:
UserRole.findAllByRoleInList([role1, role2, role3])*.user.unique()
The finder will return a List, and calling .user also returns a List, but you can cheat and cast it to a Set and it will remove duplicates. Since there's no order needed (you're returning def so it doesn't appear that you care about the collection type) you don't need to convert it back:
def getUsersByRole(String desiredRole1, String desiredRole2, String desiredRole3) {
Role role1 = Role.findByAuthority(desiredRole1)
Role role2 = Role.findByAuthority(desiredRole2)
Role role3 = Role.findByAuthority(desiredRole3)
return UserRole.findAllByRoleInList([role1, role2, role3]).user as Set
}
This presumes that you have a well-defined equals and hashCode in your User class so the uniqueness check makes sense.

Resources