public async Task <IList <PermissionRoleModel> > GetAllUserPermissionsWithRolesAsync(long userId) { var user = await SmartHomeAppDbContext.SingleAsync <User>(userId); var userPermissions = await SmartHomeAppDbContext.Query <UserPermission>() .Where(x => x.UserId == userId) .ProjectTo <PermissionRoleModel>(Mapper.ConfigurationProvider) .ToListAsync(); var rolesStrings = (List <string>) await userManager.GetRolesAsync(user); var rolePermissions = await SmartHomeAppDbContext.Query <RolePermission>() .Where(x => rolesStrings.Contains(x.Role.Name)) .ProjectTo <PermissionRoleModel>(Mapper.ConfigurationProvider) .ToListAsync(); var comparer = EqualityComparerFactory.Create <PermissionRoleModel>( x => (int)x.PermissionId, (x, y) => x.PermissionId == y.PermissionId && string.Equals(x.RoleName, y.RoleName)); var resultPermissions = userPermissions.Union(rolePermissions, comparer); resultPermissions = resultPermissions.OrderBy(x => x.PermissionName); return(resultPermissions.ToList()); }
public async Task <IdentityResult> AddToRoleAsync(long userId, long roleId) { var user = await SmartHomeAppDbContext.SingleAsync <User>(userId); var roleName = (await SmartHomeAppDbContext.SingleAsync <Role>(roleId)).Name; return(await userManager.AddToRoleAsync(user, roleName)); }
public async Task <IdentityResult> RemoveFromRolesAsync(long userId, List <long> roleIds) { var user = await SmartHomeAppDbContext.SingleAsync <User>(userId); var roleNames = await SmartHomeAppDbContext.Query <Role>().Where(x => roleIds.Contains(x.Id)) .Select(x => x.Name).ToListAsync(); return(await userManager.RemoveFromRolesAsync(user, roleNames)); }
public async Task <IdentityResult> AddToRolesAsync(long userId, List <long> roleIds) { var user = await SmartHomeAppDbContext.SingleAsync <User>(userId); // this query needs for some reason roleIds to be List var roleNames = await SmartHomeAppDbContext.Query <Role>().Where(x => roleIds.Contains(x.Id)) .Select(x => x.Name).ToListAsync(); return(await userManager.AddToRolesAsync(user, roleNames)); }
public async Task <IList <RoleModel> > GetUserRolesAsync(long userId) { var user = await SmartHomeAppDbContext.SingleAsync <User>(userId); var rolesStrings = (List <string>) await userManager.GetRolesAsync(user); return(SmartHomeAppDbContext.Query <Role>() .Where(x => rolesStrings.Contains(x.Name)) .ProjectTo <RoleModel>(Mapper.ConfigurationProvider) .ToList()); }
public async Task <long> AddAsync(long sensorId, double voltage, DateTime measurementDateTime) { var sensor = await SmartHomeAppDbContext.SingleAsync <Sensor>(sensorId); if (sensor.BatteryPowerSourceTypeId == null) { throw new ArgumentNullException(nameof(sensor.BatteryPowerSourceType), $"Sensor with id {sensor.Id} " + $"doesn't have any battery power source type, " + $"and thus can't have voltage measurements."); } var batteryMeasurement = new BatteryMeasurement() { BatteryPowerSourceTypeId = sensor.BatteryPowerSourceTypeId.Value, MeasurementDateTime = measurementDateTime, SensorId = sensor.Id, Voltage = voltage, PlaceId = sensor.PlaceId.Value }; return(await AddOrUpdateAsync(batteryMeasurement)); }
public async Task <bool> HasPermissionAsync(long userId, string permissionName) { var user = await SmartHomeAppDbContext.SingleAsync <User>(userId); bool hasPermission = await SmartHomeAppDbContext.Query <UserPermission>() .AnyAsync(x => x.UserId == userId && x.Permission.Name == permissionName); if (hasPermission) { return(true); } // has role that has that permission var roles = (List <string>) await userManager.GetRolesAsync(user); hasPermission = await SmartHomeAppDbContext.Query <RolePermission>() // filter only for roles that user has .Where(x => roles.Contains(x.Role.Name)) // does the role have that permission? .AnyAsync(x => x.Permission.Name == permissionName); return(hasPermission); }
public async Task <IdentityResult> ChangePasswordAsync(ChangePasswordModel changePasswordModel) { var user = await SmartHomeAppDbContext.SingleAsync <User>(changePasswordModel.Id); return(await userManager.ChangePasswordAsync(user, changePasswordModel.OldPassword, changePasswordModel.NewPassword)); }
public async Task <UserModel> GetByIdAsync(long id) { var entity = await SmartHomeAppDbContext.SingleAsync <User>(id); return(Mapper.Map <UserModel>(entity)); }
public async Task SignOutAsync(long userId) { var user = await SmartHomeAppDbContext.SingleAsync <User>(userId); await userManager.UpdateSecurityStampAsync(user); }
public async Task <IdentityResult> DeleteUserAsync(long id) { var user = await SmartHomeAppDbContext.SingleAsync <User>(id); return(await userManager.DeleteAsync(user)); }
public async Task <TemperatureMeasurementModel> GetByIdAsync(long id) { var temperatureMeasurement = await SmartHomeAppDbContext.SingleAsync <TemperatureMeasurement>(id); return(Mapper.Map <TemperatureMeasurementModel>(temperatureMeasurement)); }
public async Task <IdentityResult> DeleteRoleAsync(long roleId) { var role = await SmartHomeAppDbContext.SingleAsync <Role>(roleId); return(await roleManager.DeleteAsync(role)); }