diff --git a/.DS_Store b/.DS_Store
index 47fedbb5..d7e0aba2 100644
Binary files a/.DS_Store and b/.DS_Store differ
diff --git a/App/android/app/build.gradle b/App/android/app/build.gradle
index 911b0071..cdb27daf 100755
--- a/App/android/app/build.gradle
+++ b/App/android/app/build.gradle
@@ -102,8 +102,8 @@ android {
applicationId "pt.enei"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
- versionCode 3
- versionName "3"
+ versionCode 4
+ versionName "4"
ndk {
abiFilters "armeabi-v7a", "x86"
}
diff --git a/App/ios/app/Info.plist b/App/ios/app/Info.plist
index e0799c01..bd47686e 100755
--- a/App/ios/app/Info.plist
+++ b/App/ios/app/Info.plist
@@ -15,13 +15,13 @@
CFBundlePackageType
APPL
CFBundleShortVersionString
- 1.1
+ 1.2
CFBundleSignature
????
CFBundleVersion
- 12
+ 13
LSApplicationCategoryType
-
+ public.app-category.utilities
LSRequiresIPhoneOS
NSAppTransportSecurity
diff --git a/api/Controllers/AuthController.cs b/api/Controllers/AuthController.cs
index 40547dc3..ccc1c14a 100755
--- a/api/Controllers/AuthController.cs
+++ b/api/Controllers/AuthController.cs
@@ -25,7 +25,7 @@ namespace api.Controllers
public class AuthController : ControllerBase
{
- private readonly DataContext context;
+ private readonly DataContext context;
private readonly IConfiguration config;
public UserManager _userManager { get; }
public SignInManager _signInManager { get; }
@@ -34,19 +34,19 @@ namespace api.Controllers
private readonly RoleManager _roleManager;
private readonly System.Net.Http.IHttpClientFactory clientFactory;
- public AuthController(DataContext context,IConfiguration config, UserManager UserManager, SignInManager SignInManager, IMapper mapper, RoleManager roleManager, IUsersRepository repo, System.Net.Http.IHttpClientFactory clientFactory)
+ public AuthController(DataContext context, IConfiguration config, UserManager UserManager, SignInManager SignInManager, IMapper mapper, RoleManager roleManager, IUsersRepository repo, System.Net.Http.IHttpClientFactory clientFactory)
{
- _mapper = mapper;
+ _mapper = mapper;
_roleManager = roleManager;
_repo = repo;
this.clientFactory = clientFactory;
this.config = config;
_userManager = UserManager;
_signInManager = SignInManager;
- this.context = context;
-
+ this.context = context;
+
}
-
+
[HttpPost("register")]
public async Task Register(UserForRegisterDto userToRegister)
@@ -54,7 +54,7 @@ namespace api.Controllers
var userToCreate = _mapper.Map(userToRegister);
var result = await _userManager.CreateAsync(userToCreate, userToRegister.password);
-
+
if (result.Succeeded)
{
return StatusCode(201);
@@ -62,6 +62,9 @@ namespace api.Controllers
return BadRequest(result.Errors);
}
+
+
+
[HttpPost("login")]
public async Task Login(UserForLoginDto UserForLoginDto)
{
@@ -87,44 +90,48 @@ namespace api.Controllers
}
[HttpPost("loginQR")]
- public async Task loginQr(loginQr a){
-
- var u = await _userManager.FindByNameAsync(a.QRcode);
-
- using (var client = new HttpClient())
- {
- try{
-
- var url = "https://tickets.enei.pt/internal/api/Attendee/Detail";
-
- client.DefaultRequestHeaders.Add("Authorization", "Bearer " + a.token);
-
+ public async Task loginQr(loginQr a)
+ {
- var response = await client.GetStringAsync(url);
+ var u = await _userManager.FindByNameAsync(a.QRcode);
- // Console.WriteLine(response);
-
- //var resource = JObject.Parse(response);
- var appUser = await _userManager.Users.FirstOrDefaultAsync(SU => SU.NormalizedUserName == a.QRcode.ToUpper());
-
-
- return Ok(new
+ using (var client = new HttpClient())
+ {
+ try
{
- token = GenerateJwtToken(appUser).Result
- });
+ var url = "https://tickets.enei.pt/internal/api/Attendee/Detail";
- }catch(Exception e){
+ client.DefaultRequestHeaders.Add("Authorization", "Bearer " + a.token);
- Console.WriteLine(e);
- return Unauthorized();
+ var response = await client.GetStringAsync(url);
- }
-
+ // Console.WriteLine(response);
+
+ //var resource = JObject.Parse(response);
+ var appUser = await _userManager.Users.FirstOrDefaultAsync(SU => SU.NormalizedUserName == a.QRcode.ToUpper());
+
+
+ return Ok(new
+ {
+
+ token = GenerateJwtToken(appUser).Result
+ });
}
- return Unauthorized();
+ catch (Exception e)
+ {
+
+ Console.WriteLine(e);
+
+ return Unauthorized();
+
+ }
+
+
+ }
+ return Unauthorized();
}
@@ -138,8 +145,9 @@ namespace api.Controllers
var roles = await _userManager.GetRolesAsync(user);
- foreach(var role in roles) {
- claims.Add(new Claim(ClaimTypes.Role,role));
+ foreach (var role in roles)
+ {
+ claims.Add(new Claim(ClaimTypes.Role, role));
}
//obtem a key na app settings
@@ -151,7 +159,7 @@ namespace api.Controllers
//criamos um token
var tokenDescriptor = new SecurityTokenDescriptor
{
- Subject = new ClaimsIdentity(claims),
+ Subject = new ClaimsIdentity(claims),
//data de expiração (atual + 24 horas)
Expires = DateTime.Now.AddDays(30),
diff --git a/api/Controllers/mvcController.cs b/api/Controllers/mvcController.cs
index c5d6cb02..45178c2b 100755
--- a/api/Controllers/mvcController.cs
+++ b/api/Controllers/mvcController.cs
@@ -7,6 +7,7 @@ using Microsoft.EntityFrameworkCore;
using api.Dtos;
using Microsoft.AspNetCore.Identity;
using api.Models;
+using System.Net.Http;
namespace api.Controllers
{
@@ -31,7 +32,36 @@ namespace api.Controllers
return View("Views/Landing/index.cshtml");
}
+ [AllowAnonymous]
+ [HttpGet("/reset/{user}")]
+ public async Task resetPassword(string user)
+ {
+
+ string cenas = "Pua";
+ using (var client = new HttpClient())
+ {
+ try
+ {
+ var url = "https://tickets.enei.pt/internal/api/User/ResetPassword?code=" + user;
+
+ // client.DefaultRequestHeaders.Add("Authorization", "Bearer " + a.token);
+ var response = await client.GetStringAsync(url);
+ return Ok(user);
+ return View("Views/Landing/resetPage.cshtml");
+ }
+ catch (HttpRequestException a)
+ {
+
+ return View("Views/Landing/resetError.cshtml");
+ // return NotFound(a);
+ }
+
+
+
+ }
+
+ }
[HttpGet("/app")]
[AllowAnonymous]
public IActionResult appPage()
@@ -41,16 +71,22 @@ namespace api.Controllers
}
- [HttpGet("/ctf")]
+ [HttpGet("/ctf")]
[AllowAnonymous]
- public IActionResult ctfPage() {
+ public IActionResult ctfPage()
+ {
return View("Views/Landing/ctf.cshtml");
}
-
-
+ [AllowAnonymous]
+ [Route("{*url}", Order = 999)]
+ public IActionResult CatchAll()
+ {
+ Response.StatusCode = 404;
+ return View("Views/Landing/notFound.cshtml");
+ }
}
diff --git a/api/Dtos/reset.cs b/api/Dtos/reset.cs
new file mode 100644
index 00000000..ac3e98fb
--- /dev/null
+++ b/api/Dtos/reset.cs
@@ -0,0 +1,7 @@
+namespace api.Dtos
+{
+ public class reset
+ {
+ public string email { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/api/Views/Landing/app.cshtml b/api/Views/Landing/app.cshtml
index 23fb8c82..24bbd788 100644
--- a/api/Views/Landing/app.cshtml
+++ b/api/Views/Landing/app.cshtml
@@ -123,10 +123,11 @@
O login na app é feito usando esse QR code
Para obteres a password, deves efectuar reset através da APP, ou preenchendo o campo a baixo.
-
@@ -197,38 +198,38 @@
Aplicação disponível nas típicas lojas de aplicações.
-
-
+
+
-
+
@@ -348,36 +349,30 @@
-
-