Skip to content
Snippets Groups Projects
Commit 2aefdcf0 authored by Radek Puš's avatar Radek Puš
Browse files

api for changing password

parent 4eaa9beb
No related branches found
No related tags found
No related merge requests found
<h1 mat-dialog-title>Změnit heslo</h1>
 
<form [formGroup]="InsertForm">
<form [formGroup]="InsertForm" (submit)="onChangeClick($event)">
<div mat-dialog-content>
<div>
<input formControlName="Password" type="password" placeholder="staré heslo" id="password" />
......@@ -21,6 +21,6 @@
 
<div mat-dialog-actions>
<button mat-button (click)="onNoClick()" cdkFocusInitial [mat-dialog-close]> Storno </button>
<button mat-button (click)="onChangeClick()" [disabled]="InsertForm.invalid"> Odeslat </button>
<input type="submit" value="Odeslat" [disabled]="InsertForm.invalid" />
</div>
</form>
import { Component, Inject, OnInit } from '@angular/core';
import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
import { FormControl, FormBuilder, Validators, FormGroup } from '@angular/forms';
import { HttpClient } from '@angular/common/http';
 
@Component({
selector: 'app-change-password',
......@@ -17,7 +18,12 @@ export class ChangePasswordComponent implements OnInit {
ErrorMessage: string = "";
 
/** ChangePassword ctor */
constructor(public dialogRef: MatDialogRef<ChangePasswordComponent>, @Inject(MAT_DIALOG_DATA) public data: DialogData, private FormBuilder: FormBuilder) { }
constructor(
public dialogRef: MatDialogRef<ChangePasswordComponent>,
@Inject(MAT_DIALOG_DATA) public data: DialogData,
private FormBuilder: FormBuilder,
private HttpClient: HttpClient
) { }
 
ngOnInit() {
this.Password = new FormControl('', [Validators.required]);
......@@ -31,34 +37,33 @@ export class ChangePasswordComponent implements OnInit {
});
}
 
onNoClick(): void {
this.dialogRef.close();
}
onChangeClick(event): void {
this.changePassword(event);
}
changePassword(event): void {
event.preventDefault();
 
const target = event.target;
const password = target.querySelector('#password').value;
const oldPassword = target.querySelector('#password').value;
const newPassword = target.querySelector('#newPassword').value;
const passwordCheck = target.querySelector('#passwordCheck').value;
 
/*this.registrationService.register(username, password, passwordCheck).subscribe((res) => {
console.log('Registration successful: ', res.status.toString());
this.HttpClient.put<{ username: string, status: number, messasge: string }>('api/Registration', { oldPassword, newPassword }).subscribe((res) => {
console.log('Password update successful: ', res.status.toString());
this.IsChangeValid = false;
if (res.status = 1) {
this.IsChangeValid = true;
this.Router.navigate(['login']);
this.dialogRef.close();
}
}, error => {
console.error(error);
console.error("changig password error:", error);
this.IsChangeValid = false;
this.ErrorMessage = "Uživatelské jméno už existuje.";
});*/
}
onNoClick(): void {
this.dialogRef.close();
}
onChangeClick(): void {
this.onNoClick();
this.ErrorMessage = "Interní chyba";
});
}
}
 
......
......@@ -40,7 +40,8 @@ namespace Core.Controllers
Subject = new ClaimsIdentity(new Claim[] {
new Claim(JwtRegisteredClaimNames.Sub, username),
new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
new Claim(ClaimTypes.NameIdentifier, ID.ToString()),
//new Claim(ClaimTypes.NameIdentifier, ID.ToString()),
new Claim("UserID", ID.ToString()),
new Claim("LoggedOn", DateTime.Now.ToString())
//ClaimTypes.Role if needed role
}),
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Security.Claims;
using Core.BusinessLogic.PasswordLogic;
using Core.Controllers.containers;
using Core.Data;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
 
namespace Core.Controllers
......@@ -35,5 +34,29 @@ namespace Core.Controllers
Context.SaveChanges();
return Ok(new { credentials.username, status = 1, message = "Registration Successful" });
}
// PUT: api/Registration
[HttpPut]
[Authorize(Policy = "RequireLoggedIn")]
public IActionResult Put([FromBody] PasswordContainer passwordContainer)
{
Claim userJwtID = User.Claims.First(c => c.Type == "UserID");
long userID = long.Parse(userJwtID.Value);
Models.User user = Context.Users.FirstOrDefault(u => u.ID == userID);
if(user==null)
return Unauthorized(new { message = "user not found" });
if(!PasswordHasher.Check(user.Password, passwordContainer.oldPassword))
return Unauthorized(new { message = "wrong password" });
user.Password = PasswordHasher.Hash(passwordContainer.newPassword);
Context.Update(user);
Context.SaveChanges();
return Ok(new { status = 1, message = "Password change was successful" });
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Core.Controllers.containers
{
public class PasswordContainer
{
public string oldPassword;
public string newPassword;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment