Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit014f352

Browse files
committed
CU-868fv9d5h Fixing Contacts Permission Issue.
1 parentf3bb20f commit014f352

File tree

13 files changed

+243
-44
lines changed

13 files changed

+243
-44
lines changed

‎Core/Resgrid.Model/MobileCarriers.cs‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,8 @@ public static class Carriers
302302
MobileCarriers.Vodacom,
303303
MobileCarriers.MTN,
304304
MobileCarriers.TelkomMobile,
305-
MobileCarriers.CellC
305+
MobileCarriers.CellC,
306+
MobileCarriers.TMobile
306307
};
307308

308309
publicstaticHashSet<MobileCarriers>OnPremSmsGatewayCarriers=newHashSet<MobileCarriers>()

‎Providers/Resgrid.Providers.Claims/ClaimsLogic.cs‎

Lines changed: 31 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1101,16 +1101,18 @@ public static void AddContactsClaims(ClaimsIdentity identity, bool isAdmin, List
11011101
}
11021102
elseif(permission.Action==(int)PermissionActions.DepartmentAdminsAndSelectRoles&&!isAdmin)
11031103
{
1104-
varroleIds=permission.Data.Split(char.Parse(",")).Select(int.Parse);
1105-
varrole=fromrinroles
1106-
whereroleIds.Contains(r.PersonnelRoleId)
1107-
selectr;
1108-
1109-
if(role.Any())
1104+
if(!String.IsNullOrWhiteSpace(permission.Data))
11101105
{
1111-
identity.AddClaim(newClaim(ResgridClaimTypes.Resources.Contacts,ResgridClaimTypes.Actions.View));
1112-
}
1106+
varroleIds=permission.Data.Split(char.Parse(",")).Select(int.Parse);
1107+
varrole=fromrinroles
1108+
whereroleIds.Contains(r.PersonnelRoleId)
1109+
selectr;
11131110

1111+
if(role.Any())
1112+
{
1113+
identity.AddClaim(newClaim(ResgridClaimTypes.Resources.Contacts,ResgridClaimTypes.Actions.View));
1114+
}
1115+
}
11141116
}
11151117
elseif(permission.Action==(int)PermissionActions.Everyone)
11161118
{
@@ -1143,17 +1145,19 @@ where roleIds.Contains(r.PersonnelRoleId)
11431145
}
11441146
elseif(permission.Action==(int)PermissionActions.DepartmentAdminsAndSelectRoles&&!isAdmin)
11451147
{
1146-
varroleIds=permission.Data.Split(char.Parse(",")).Select(int.Parse);
1147-
varrole=fromrinroles
1148-
whereroleIds.Contains(r.PersonnelRoleId)
1149-
selectr;
1150-
1151-
if(role.Any())
1148+
if(!String.IsNullOrWhiteSpace(permission.Data))
11521149
{
1153-
identity.AddClaim(newClaim(ResgridClaimTypes.Resources.Contacts,ResgridClaimTypes.Actions.Update));
1154-
identity.AddClaim(newClaim(ResgridClaimTypes.Resources.Contacts,ResgridClaimTypes.Actions.Create));
1155-
}
1150+
varroleIds=permission.Data.Split(char.Parse(",")).Select(int.Parse);
1151+
varrole=fromrinroles
1152+
whereroleIds.Contains(r.PersonnelRoleId)
1153+
selectr;
11561154

1155+
if(role.Any())
1156+
{
1157+
identity.AddClaim(newClaim(ResgridClaimTypes.Resources.Contacts,ResgridClaimTypes.Actions.Update));
1158+
identity.AddClaim(newClaim(ResgridClaimTypes.Resources.Contacts,ResgridClaimTypes.Actions.Create));
1159+
}
1160+
}
11571161
}
11581162
elseif(permission.Action==(int)PermissionActions.Everyone)
11591163
{
@@ -1186,16 +1190,18 @@ where roleIds.Contains(r.PersonnelRoleId)
11861190
}
11871191
elseif(permission.Action==(int)PermissionActions.DepartmentAdminsAndSelectRoles&&!isAdmin)
11881192
{
1189-
varroleIds=permission.Data.Split(char.Parse(",")).Select(int.Parse);
1190-
varrole=fromrinroles
1191-
whereroleIds.Contains(r.PersonnelRoleId)
1192-
selectr;
1193-
1194-
if(role.Any())
1193+
if(!String.IsNullOrWhiteSpace(permission.Data))
11951194
{
1196-
identity.AddClaim(newClaim(ResgridClaimTypes.Resources.Contacts,ResgridClaimTypes.Actions.Delete));
1197-
}
1195+
varroleIds=permission.Data.Split(char.Parse(",")).Select(int.Parse);
1196+
varrole=fromrinroles
1197+
whereroleIds.Contains(r.PersonnelRoleId)
1198+
selectr;
11981199

1200+
if(role.Any())
1201+
{
1202+
identity.AddClaim(newClaim(ResgridClaimTypes.Resources.Contacts,ResgridClaimTypes.Actions.Delete));
1203+
}
1204+
}
11991205
}
12001206
elseif(permission.Action==(int)PermissionActions.Everyone)
12011207
{
Lines changed: 186 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,186 @@
1+
usingMicrosoft.AspNetCore.Http;
2+
usingMicrosoft.AspNetCore.Mvc;
3+
usingResgrid.Framework;
4+
usingResgrid.Model;
5+
usingResgrid.Model.Services;
6+
usingSystem;
7+
usingSystem.IO;
8+
usingSystem.Net.Mime;
9+
usingSystem.Threading.Tasks;
10+
11+
usingResgrid.Web.Services.Models;
12+
usingResgrid.Web.ServicesCore.Helpers;
13+
usingSixLabors.ImageSharp;
14+
usingSixLabors.ImageSharp.Processing;
15+
16+
17+
namespaceResgrid.Web.Services.Controllers.v4
18+
{
19+
/// <summary>
20+
/// Used to interact with the user avatars (profile pictures) in the Resgrid system. The authentication header isn't required to access this method.
21+
/// </summary>
22+
[Route("api/v{VersionId:apiVersion}/[controller]")]
23+
[ApiVersion("4.0")]
24+
[ApiExplorerSettings(GroupName="v4")]
25+
//[EnableCors("_resgridWebsiteAllowSpecificOrigins")]
26+
publicclassAvatarsController:ControllerBase
27+
{
28+
privatereadonlyIImageService_imageService;
29+
privatestaticbyte[]_defaultProfileImage;
30+
31+
publicAvatarsController(IImageServiceimageService)
32+
{
33+
_imageService=imageService;
34+
}
35+
36+
/// <summary>
37+
/// Get a users avatar from the Resgrid system based on their ID
38+
/// </summary>
39+
/// <param name="id">ID of the user</param>
40+
/// <returns></returns>
41+
[HttpGet("Get")]
42+
[Produces(MediaTypeNames.Image.Jpeg)]
43+
[ProducesResponseType(StatusCodes.Status200OK)]
44+
[ProducesResponseType(StatusCodes.Status404NotFound)]
45+
publicasyncTask<ActionResult>Get(stringid,int?type)
46+
{
47+
byte[]data=null;
48+
if(type==null)
49+
data=await_imageService.GetImageAsync(ImageTypes.Avatar,id);
50+
else
51+
data=await_imageService.GetImageAsync((ImageTypes)type.Value,id);
52+
53+
if(data==null||data.Length<=0)
54+
returnFile(GetDefaultProfileImage(),"image/png");
55+
56+
returnFile(data,"image/jpeg");
57+
}
58+
59+
[HttpPost("Upload")]
60+
[ProducesResponseType(StatusCodes.Status200OK)]
61+
[ProducesResponseType(StatusCodes.Status201Created)]
62+
[ProducesResponseType(StatusCodes.Status400BadRequest)]
63+
publicasyncTask<ActionResult>Upload([FromQuery]stringid,int?type)
64+
{
65+
varimg=HttpContext.Request.Form.Files.Count>0?
66+
HttpContext.Request.Form.Files[0]:null;
67+
68+
// check for a valid mediatype
69+
if(!img.ContentType.StartsWith("image/"))
70+
returnBadRequest();
71+
72+
// load the image from the upload and generate a new filename
73+
//var image = Image.FromStream(img.OpenReadStream());
74+
varextension=Path.GetExtension(img.FileName);
75+
byte[]imgArray;
76+
intwidth=0;
77+
intheight=0;
78+
79+
using(Imageimage=Image.Load(img.OpenReadStream()))
80+
{
81+
//image.Mutate(x => x
82+
// .Resize(image.Width / 2, image.Height / 2)
83+
// .Grayscale());
84+
85+
width=image.Width;
86+
height=image.Height;
87+
88+
MemoryStreamms=newMemoryStream();
89+
awaitimage.SaveAsPngAsync(ms);
90+
imgArray=ms.ToArray();
91+
92+
//image.Save()"output/fb.png"); // Automatic encoder selected based on extension.
93+
}
94+
95+
//ImageConverter converter = new ImageConverter();
96+
//byte[] imgArray = (byte[])converter.ConvertTo(image, typeof(byte[]));
97+
98+
if(type==null)
99+
await_imageService.SaveImageAsync(ImageTypes.Avatar,id,imgArray);
100+
else
101+
await_imageService.SaveImageAsync((ImageTypes)type.Value,id,imgArray);
102+
103+
varbaseUrl=Config.SystemBehaviorConfig.ResgridApiBaseUrl;
104+
105+
stringurl;
106+
107+
if(type==null)
108+
url=baseUrl+"/api/v4/Avatars/Get?id="+id;
109+
else
110+
url=baseUrl+"/api/v4/Avatars/Get?id="+id+"?type="+type.Value;
111+
112+
varobj=new
113+
{
114+
status=CroppicStatuses.Success,
115+
url=url,
116+
width=width,
117+
height=height
118+
};
119+
120+
returnCreatedAtAction(nameof(Upload),new{id=obj.url},obj);
121+
}
122+
123+
[HttpPut("Crop")]
124+
[ProducesResponseType(StatusCodes.Status200OK)]
125+
[ProducesResponseType(StatusCodes.Status201Created)]
126+
[ProducesResponseType(StatusCodes.Status400BadRequest)]
127+
publicasyncTask<ActionResult>Crop([FromBody]CropRequestmodel)
128+
{
129+
// extract original image ID and generate a new filename for the cropped result
130+
varoriginalUri=newUri(model.imgUrl);
131+
varoriginalId=originalUri.Query.Replace("?id=","");//.Last();
132+
//var extension = Path.GetExtension(originalId);
133+
//var croppedId = GenerateIdFor(model.CroppedWidth, model.CroppedHeight, extension);
134+
135+
try
136+
{
137+
varms=newMemoryStream(await_imageService.GetImageAsync(ImageTypes.Avatar,originalId));
138+
//var img = Image.FromStream(ms);
139+
140+
byte[]imgArray;
141+
142+
Imageimage=Image.Load(ms);
143+
144+
// load the original picture and resample it to the scaled values
145+
varbitmap=ImageUtils.Resize(image,(int)model.imgW,(int)model.imgH);
146+
147+
varcroppedBitmap=ImageUtils.Crop(bitmap,model.imgX1,model.imgY1,model.cropW,model.cropH);
148+
149+
MemoryStreamms2=newMemoryStream();
150+
awaitcroppedBitmap.SaveAsPngAsync(ms2);
151+
imgArray=ms.ToArray();
152+
153+
//ImageConverter converter = new ImageConverter();
154+
//byte[] imgArray = (byte[])converter.ConvertTo(croppedBitmap, typeof(byte[]));
155+
156+
await_imageService.SaveImageAsync(ImageTypes.Avatar,originalId,imgArray);
157+
}
158+
catch(Exceptione)
159+
{
160+
returnBadRequest();
161+
}
162+
163+
varobj=new
164+
{
165+
status=CroppicStatuses.Success,
166+
url=originalId
167+
};
168+
169+
returnCreatedAtAction(nameof(Crop),new{id=obj.url},obj);
170+
}
171+
172+
privatebyte[]GetDefaultProfileImage()
173+
{
174+
if(_defaultProfileImage==null)
175+
_defaultProfileImage=EmbeddedResources.GetApiRequestFile(typeof(AvatarsController),"Resgrid.Web.Services.Properties.Resources.defaultProfile.png");
176+
177+
return_defaultProfileImage;
178+
}
179+
}
180+
181+
internalstaticclassCroppicStatuses
182+
{
183+
publicconststringSuccess="success";
184+
publicconststringError="error";
185+
}
186+
}

‎Web/Resgrid.Web.Services/Resgrid.Web.Services.xml‎

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎Web/Resgrid.Web/Areas/User/Controllers/ConnectController.cs‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public async Task<IActionResult> Index()
4343
varmodel=newIndexView();
4444
model.Department=await_departmentsService.GetDepartmentByIdAsync(DepartmentId);
4545
model.Profile=_departmentProfileService.GetOrInitializeDepartmentProfile(DepartmentId);
46-
model.ImageUrl=$"{Config.SystemBehaviorConfig.ResgridApiBaseUrl}/api/v3/Avatars/Get?id={model.Profile.DepartmentId}&type=1";
46+
model.ImageUrl=$"{Config.SystemBehaviorConfig.ResgridApiBaseUrl}/api/v4/Avatars/Get?id={model.Profile.DepartmentId}&type=1";
4747

4848
varposts=_departmentProfileService.GetArticlesForDepartment(model.Profile.DepartmentProfileId);
4949
varvisiblePosts=_departmentProfileService.GetVisibleArticlesForDepartment(model.Profile.DepartmentProfileId);
@@ -67,7 +67,7 @@ public async Task<IActionResult> Profile()
6767

6868
model.ApiUrl=Config.SystemBehaviorConfig.ResgridApiBaseUrl;
6969
model.Department=await_departmentsService.GetDepartmentByUserIdAsync(UserId);
70-
model.ImageUrl=$"{model.ApiUrl}/api/v3/Avatars/Get?id={model.Department.DepartmentId}&type=1";
70+
model.ImageUrl=$"{model.ApiUrl}/api/v4/Avatars/Get?id={model.Department.DepartmentId}&type=1";
7171

7272

7373
varprofile=_departmentProfileService.GetOrInitializeDepartmentProfile(DepartmentId);
@@ -98,7 +98,7 @@ public async Task<IActionResult> Profile(ProfileView model)
9898
{
9999
model.ApiUrl=Config.SystemBehaviorConfig.ResgridApiBaseUrl;
100100
model.Department=await_departmentsService.GetDepartmentByUserIdAsync(UserId);
101-
model.ImageUrl=$"{model.ApiUrl}/api/v3/Avatars/Get?id={model.Department.DepartmentId}&type=1";
101+
model.ImageUrl=$"{model.ApiUrl}/api/v4/Avatars/Get?id={model.Department.DepartmentId}&type=1";
102102

103103
if(ModelState.IsValid)
104104
{

‎Web/Resgrid.Web/Areas/User/Views/Dispatch/Chat.cshtml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@
166166
167167
functionAddUser(chatHub,id,userId,name) {
168168
var myId=$('#myConId').val();
169-
var code=$('<lipl-pds">'+ id+'"><a href="#"><img src="@Resgrid.Config.SystemBehaviorConfig.ResgridApiBaseUrl/api/v3/Avatars/Get?id='+ userId+'" onerror="this.src=&quot;@Resgrid.Config.SystemBehaviorConfig.ResgridBaseUrl/images/defaultProfile.png&quot;"> <span>'+ name+'</span></a><span>0</span></li>');
169+
var code=$('<lipl-pds">'+ id+'"><a href="#"><img src="@Resgrid.Config.SystemBehaviorConfig.ResgridApiBaseUrl/api/v4/Avatars/Get?id='+ userId+'" onerror="this.src=&quot;@Resgrid.Config.SystemBehaviorConfig.ResgridBaseUrl/images/defaultProfile.png&quot;"> <span>'+ name+'</span></a><span>0</span></li>');
170170
171171
$(code).dblclick(function () {
172172
var id=$(this).attr('id');

‎Web/Resgrid.Web/Areas/User/Views/Home/EditUserProfile.cshtml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@
292292
<divid="avatar"class="center"style="text-align:center;">
293293
@if (Model.HasCustomIamge)
294294
{
295-
<imgstyle="width:100px;height:100px;text-align:center;"src="@Model.ApiUrl/api/v3/Avatars/Get?id=@Model.UserId"onerror="this.src = '@Resgrid.Config.SystemBehaviorConfig.ResgridBaseUrl/images/defaultProfile.png'" />
295+
<imgstyle="width:100px;height:100px;text-align:center;"src="@Model.ApiUrl/api/v4/Avatars/Get?id=@Model.UserId"onerror="this.src = '@Resgrid.Config.SystemBehaviorConfig.ResgridBaseUrl/images/defaultProfile.png'" />
296296
}
297297
else
298298
{

‎Web/Resgrid.Web/Areas/User/Views/Messages/_UnreadTopMessagesPartial.cshtml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<li>
88
<divclass="dropdown-messages-box">
99
<aclass="pull-left"asp-controller="Personnel"asp-action="ViewPerson"asp-route-area="User"asp-route-userId="@message.SendingUserId"style="padding:4px;">
10-
<imgalt="image"class="img-circle"src="@Resgrid.Config.SystemBehaviorConfig.ResgridApiBaseUrl/api/v3/Avatars/Get?id=@message.SendingUserId"onerror="this.src = '@Resgrid.Config.SystemBehaviorConfig.ResgridBaseUrl/images/defaultProfile.png'">
10+
<imgalt="image"class="img-circle"src="@Resgrid.Config.SystemBehaviorConfig.ResgridApiBaseUrl/api/v4/Avatars/Get?id=@message.SendingUserId"onerror="this.src = '@Resgrid.Config.SystemBehaviorConfig.ResgridBaseUrl/images/defaultProfile.png'">
1111
</a>
1212
<divclass="media-body">
1313
<aasp-controller="Messages"asp-action="ViewMessage"asp-route-area="User"asp-route-messageId="@message.MessageId">

‎Web/Resgrid.Web/Areas/User/Views/Personnel/ViewPerson.cshtml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
<divclass="ibox float-e-margins">
3131
<divclass="ibox-content">
3232
<divclass="row">
33-
<divclass="col-md-3 col-lg-3"align="center"><imgstyle="width:100px;height:100px;text-align:center;"src="@Resgrid.Config.SystemBehaviorConfig.ResgridApiBaseUrl/api/v3/Avatars/Get?id=@Model.Profile.UserId"onerror="this.src = '@Resgrid.Config.SystemBehaviorConfig.ResgridBaseUrl/images/defaultProfile.png'" /><h3>@Model.Profile.FullName.AsFirstNameLastName</h3></div>
33+
<divclass="col-md-3 col-lg-3"align="center"><imgstyle="width:100px;height:100px;text-align:center;"src="@Resgrid.Config.SystemBehaviorConfig.ResgridApiBaseUrl/api/v4/Avatars/Get?id=@Model.Profile.UserId"onerror="this.src = '@Resgrid.Config.SystemBehaviorConfig.ResgridBaseUrl/images/defaultProfile.png'" /><h3>@Model.Profile.FullName.AsFirstNameLastName</h3></div>
3434
<divclass=" col-md-9 col-lg-9">
3535
<tableclass="table table-user-information">
3636
<tbody>

‎Web/Resgrid.Web/Areas/User/Views/Personnel/ViewRole.cshtml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
@foreach (varuinModel.Role.Users)
4343
{
4444
<tr>
45-
<tdclass="client-avatar"><ahref=""><imgalt="image"src="@Resgrid.Config.SystemBehaviorConfig.ResgridApiBaseUrl/api/v3/Avatars/Get?id=@u.UserId"onerror="this.src='@Resgrid.Config.SystemBehaviorConfig.ResgridBaseUrl/images/defaultProfile.png'"></a> </td>
45+
<tdclass="client-avatar"><ahref=""><imgalt="image"src="@Resgrid.Config.SystemBehaviorConfig.ResgridApiBaseUrl/api/v4/Avatars/Get?id=@u.UserId"onerror="this.src='@Resgrid.Config.SystemBehaviorConfig.ResgridBaseUrl/images/defaultProfile.png'"></a> </td>
4646
<td><aasp-controller="Personnel"asp-action="ViewPerson"asp-route-area="User"asp-route-userId="@u.UserId"class="client-link">@(awaitUserHelper.GetFullNameForUser(u.UserId))</a></td>
4747
</tr>
4848
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp