Exemple #1
0
        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());
        }
Exemple #2
0
        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"));
            }
        }
Exemple #3
0
        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"));
        }
Exemple #4
0
        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);
        }
Exemple #6
0
        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());
        }
Exemple #7
0
        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());
        }
Exemple #8
0
        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"));
        }