public async Task <IActionResult> ShareLockPost([FromRoute][Required] int lockId, [FromHeader][Required()] string token, [FromBody] Share body) { await Db.Connection.OpenAsync(); AuthenticationHandler auth = new AuthenticationHandler(Db); var authToken = auth.CheckAuth(token); if (authToken.Result != null) { if (await auth.CheckLockOwner(lockId, authToken.Result.Id) == true) { UserQuerry helper = new UserQuerry(Db); // helper. // Setup stuf to create the new rented Rented rLock = new Rented(Db); rLock.LockId = lockId; rLock.StartDate = body.StartDate; rLock.EndDate = body.EndDate; rLock.UserId = helper.GetUserByUsername(body.Username).Result.Id; await rLock.InsertAsync(); Db.Dispose(); return(new OkObjectResult("Access Granted")); } Db.Dispose(); return(new UnauthorizedResult()); } Db.Dispose(); return(new UnauthorizedResult()); }
public async Task <IActionResult> ResendEmail([FromBody] Login body) { await Db.Connection.OpenAsync(); body.Email = body.Email.ToLower(); //create user object and fill it with user UserQuerry resend = new UserQuerry(Db); User resendUser = await resend.GetUserByEmail(body.Email); // check if user is verified if (resendUser.Verified != "true") { // if not resend email MailHandler mailHandler = new MailHandler(); mailHandler.Execute(body.Email, resendUser.FirstName, resendUser.Verified); Db.Dispose(); return(new OkObjectResult("email resend")); } else { // if is then give error Db.Dispose(); return(new ConflictObjectResult("User Already verified")); } }
public async Task <IActionResult> LoginUser([FromBody] Login body) { // email should always be lower case var lowerEmail = body.Email.ToLower(); // Establish database connection await Db.Connection.OpenAsync(); UserQuerry loginUser = new UserQuerry(Db); User user = await loginUser.GetUserByEmail(lowerEmail); LoginsessionQuerry sessions = new LoginsessionQuerry(Db); if (user != null) { if (user.Verified == "true") { if (BCryptHelper.CheckPassword(body.Password, user.Password)) //body.Password has to be hashed with { // generate authentication token (create global unique identifier and base64 encode it) string generatedToken = Helpers.SecureRandomNumber(); // check if there is a session // delete rows with that user_id // insert new one Loginsession session = await sessions.FindOneByUserId(user.Id); if (session != null) { await session.DeleteAsync(); } sessions.InsertLoginTable(user.Id, generatedToken); Db.Dispose(); return(new OkObjectResult(generatedToken)); } else { Db.Dispose(); return(new UnauthorizedObjectResult("Login incorrect")); } } else { Db.Dispose(); return(new StatusCodeResult(412)); } } // return error code if above fails Db.Dispose(); return(new BadRequestObjectResult("User not found")); }
public async Task <IActionResult> VerifyUser([FromRoute][Required] string verifyId) { await Db.Connection.OpenAsync(); UserQuerry verifyUser = new UserQuerry(Db); verifyUser.Verified(verifyId); // TODO some page to show the person succeeded // return base.Content("<script>window.close();</script>", "text/html"); Db.Dispose(); return(new OkObjectResult("success")); }
public async Task <User> CheckAuth(string token) { LoginsessionQuerry logins = new LoginsessionQuerry(Db); Loginsession login = await logins.GetUserIdByToken(token); if (login != null) { UserQuerry users = new UserQuerry(Db); User user = await users.FindOneAsync(login.user_id); return(user); } return(null); }
public async Task <IActionResult> ChangeDetails([FromHeader][Required()] string token, [FromBody] Userdetailchange body) { await Db.Connection.OpenAsync(); AuthenticationHandler auth = new AuthenticationHandler(Db); var authToken = auth.CheckAuth(token); if (authToken.Result != null) { UserQuerry userQuerry = new UserQuerry(Db); User user = await userQuerry.FindOneAsync(authToken.Result.Id); if (body.FirstName != null) { user.FirstName = body.FirstName; } if (body.LastName != null) { user.LastName = body.LastName; } // if(body.Email != null){ // // Check if there is already an user with this email // body.EmailToLowerCase(); // User Usermail = await userQuerry.GetUserByEmail(body.Email); // if(Usermail != null){ // Db.Dispose(); // return new BadRequestObjectResult("email already in use"); // } // user.Email = body.Email; // } if (body.Newpassword != null) { if (BCryptHelper.CheckPassword(body.Currentpassword, user.Password)) //body.Password has to be hashed with { user.Password = body.Newpassword; user.HashPass(); } } await user.UpdateAsync(); Db.Dispose(); return(new OkObjectResult("User succesfully updated")); } Db.Dispose(); return(new UnauthorizedResult()); }
public virtual async Task <IActionResult> MeGet([FromHeader][Required()] string token) { await Db.Connection.OpenAsync(); AuthenticationHandler auth = new AuthenticationHandler(Db); var authToken = auth.CheckAuth(token); if (authToken.Result != null) { UserQuerry userQuerry = new UserQuerry(Db); User user = await userQuerry.FindOneAsync(authToken.Result.Id); Db.Dispose(); return(new ObjectResult(new UserInfo(user))); } Db.Dispose(); return(new UnauthorizedResult()); }
public async Task <IActionResult> RegisterUser([FromBody] User body) { // Email should always be lowercase body.EmailToLowerCase(); // Open database connection await Db.Connection.OpenAsync(); UserQuerry loginUser = new UserQuerry(Db); // Check if there is already an user with this email or username User user = await loginUser.GetUserByEmail(body.Email); User user2 = await loginUser.GetUserByUsername(body.Username); UserQuerry registerUser = new UserQuerry(Db); if (await registerUser.GetUserByEmail(body.Email) == null && await registerUser.GetUserByUsername(body.Username) == null) { body.Db = Db; body.Verified = Helpers.SecureRandomNumber(42); body.HashPass(); await body.InsertAsync(); MailHandler mailHandler = new MailHandler(); mailHandler.Execute(body.Email, body.FirstName, body.Verified); Db.Dispose(); return(new OkObjectResult("Account succesfully made")); } Db.Dispose(); return(new BadRequestObjectResult("Account already exists")); }