public async Task <IActionResult> UpdatePassword(ChangePasswordRequest request) { //user identifier var userId = PlatformUtils.GetIdentityUserId(User); var user = AuthorizationLayer.GetUserById(userId); //Tento il signin ed ottengo l'utente se è completato var result = await AuthorizationLayer.SignIn(user.Username, request.OldPassword); //Se non ho utente, unauthorized if (result == null) { return(Unauthorized()); } // recupero il profilo var validations = AuthorizationLayer.UpdateUserPassword(result, request.Password); //controllo risultato if (validations.Count > 0) { return(BadRequest(validations)); } //Se è tutto ok, serializzo e restituisco return(Ok(new StringResponse { Value = request.Password })); }
public Task <IActionResult> CreateNotificationSubscription(NotificationSubscriptionCreateRequest request) { var currentUserId = PlatformUtils.GetIdentityUserId(User); var existingUser = AuthorizationLayer.GetUserById(currentUserId); if (existingUser == null) { return(Task.FromResult <IActionResult>(NotFound())); } var model = new NotificationSubscription { UserId = existingUser.Id, Url = request.Url, P256dh = request.P256dh, Auth = request.Auth }; //Invocazione del service layer var validations = BasicLayer.CreateNotificationSubscription(model); if (validations.Count > 0) { return(BadRequestTask(validations)); } //Return contract return(Reply(new OkResponse { Status = true })); }
public async Task <IActionResult> CallShooter(CallShooterRequest request) { // For a real application, generate your own var currentUserId = PlatformUtils.GetIdentityUserId(User); var existingUser = AuthorizationLayer.GetUserById(currentUserId); if (existingUser == null) { return(NotFound()); } var subscriptions = BasicLayer.FetchNotificationSubscriptionsByUserId(request.ShooterId); var vapidDetails = new VapidDetails($"mailto:{_vapidUser}", _publicKey, _privateKey); var pushSubscriptions = subscriptions.Select(x => new PushSubscription(x.Url, x.P256dh, x.Auth)).ToList(); var webPushClient = new WebPushClient(); try { var message = string.Empty; switch ((int)request.Context) { case (int)CallShooterContextEnum.MatchDirector: var userStage = BasicLayer.GetSOStage(request.MatchId, existingUser.Id); message = $"{existingUser.FirstName} {existingUser.LastName} ti sta cercando allo stage {userStage.Index}:{userStage.Name}!"; break; default: message = $"{existingUser.FirstName} {existingUser.LastName} ti sta cercando!"; break; } var payload = JsonSerializer.Serialize(new { message, url = string.Empty, }); if (pushSubscriptions.Count == 0) { return(Ok(new OkResponse { Status = false, Errors = new List <string> { "NoSubscriptions" } })); } var tasks = pushSubscriptions.Select(pushSubscription => webPushClient.SendNotificationAsync(pushSubscription, payload, vapidDetails)).ToList(); await Task.WhenAll(tasks); return(Ok(new OkResponse() { Status = true })); } catch (Exception ex) { Console.Error.WriteLine("Error sending push notification: " + ex.Message); return(Ok(ex)); } }
public IActionResult UpdateUserPassword(UserPasswordUpdateRequest request) { //User id corrente var userId = PlatformUtils.GetIdentityUserId(User); //modifica solo se admin o se sè stesso o è autorizzato if (request.UserId != userId) { return(Unauthorized()); } //Recupero l'elemento dal business layer var entity = AuthorizationLayer.GetUserById(request.UserId); if (entity == null) { return(NotFound()); } //Salvataggio var validations = AuthorizationLayer.UpdateUserPassword(entity, request.Password); if (validations.Count > 0) { return(BadRequest(validations)); } //Confermo return(Ok(new BooleanResponse() { Value = true })); }
public IActionResult GetProfile() { var userId = PlatformUtils.GetIdentityUserId(User); var entity = AuthorizationLayer.GetUserById(userId); //verifico validità dell'entità if (entity == null) { return(NotFound()); } //Serializzazione e conferma return(Ok(ContractUtils.GenerateContract(entity))); }
public IActionResult UpdateProfile(UserUpdateRequest request) { //User id corrente var userId = PlatformUtils.GetIdentityUserId(User); //modifica solo se admin o se sè stesso o è autorizzato if (request.UserId != userId) { return(Unauthorized()); } //Recupero l'elemento dal business layer var entity = AuthorizationLayer.GetUserById(request.UserId); if (entity == null) { return(NotFound()); } //Aggiornamento dell'entità entity.Username = request.Username; entity.FirstName = request.FirstName; entity.LastName = request.LastName; entity.Email = request.Email; entity.BirthDate = request.BirthDate; //Salvataggio var validations = AuthorizationLayer.UpdateUser(entity); if (validations.Count > 0) { return(BadRequest(validations)); } //Confermo return(Ok(ContractUtils.GenerateContract(entity))); }