예제 #1
0
        public Authorization GetAuthorization(mulContext context, Users user)
        {
            Authorization data = new Authorization
            {
                Owner = context.Accounts.FirstOrDefault(o => o.Id == user.AccountId).OwnerId == user.Id
            };

            return(data);
        }
        public void SignupAccountAndUser(RegisterDto registration)
        {
            //Encrypt Password
            string pass = BCrypt.HashPassword(registration.Password);
            //.verify for checking
            var time = DateTime.UtcNow;

            var account = new Accounts
            {
                AccountName = registration.AccountName,
                DateCreated = time,
                Email       = registration.Email
            };
            var user = new Users
            {
                Account     = account,
                FirstName   = registration.FirstName,
                LastName    = registration.LastName,
                DateCreated = time,
                Email       = registration.Email,
                Password    = pass
            };

            using (var context = new mulContext())
            {
                bool matchedAccount = context.Accounts.Any(o => o.Email == registration.Email);
                bool matchedUser    = context.Users.Any(o => o.Email == registration.Email);
                if (matchedAccount || matchedUser)
                {
                    if (matchedAccount)
                    {
                        Errored = true;
                        ErrorMessages.Add("Email already exists for an account");
                        //debug
                        context.Accounts.RemoveRange(context.Accounts.Where(o => o.Email == registration.Email));
                        context.SaveChanges();
                    }
                    if (matchedUser)
                    {
                        Errored = true;
                        ErrorMessages.Add("Email already exists for a user");
                    }
                }
                else
                {
                    context.Users.Add(user);
                }
                context.SaveChanges();
                account.Owner = user;
                context.SaveChanges();
                //Check if exists based on email

                ErrorMessages.Add("successfully added new account");
            }
        }
예제 #3
0
        public void AuthenticateSignin(string password, string email)
        {
            try
            {
                using (var context = new mulContext())
                {
                    //Find account via email
                    bool matchedWithEmail = context.Users.Any(o => o.Email == email.ToLower());
                    if (!matchedWithEmail)
                    {
                        Errored = true;
                        ErrorMessages.Add("Email does not exist for user.");
                        return;
                    }

                    var user = context.Users.FirstOrDefault(o => o.Email == email.ToLower());


                    //Verify password
                    if (!BCrypt.Verify(password, user.Password))
                    {
                        Errored = true;
                        ErrorMessages.Add("Passwords do not match");
                        return;
                    }

                    var tokenManager = new TokenManager();
                    //Pull Authorization Data
                    var           authorizer        = new Authorizer();
                    Authorization authorizationData = authorizer.GetAuthorization(context, user);

                    //Generate Token
                    string token = tokenManager.CreateToken(user.Id);

                    //Create data transfer object
                    Token = new AuthenticatedDto
                    {
                        Token      = token,
                        Authorized = authorizationData
                    };
                    //Signup done, send DTO back
                }
            }
            catch (Exception ex)
            {
                Errored = true;
                ErrorMessages.Add(ex.Message);
                return;
            }
        }
예제 #4
0
        public AuthenticatedDto Authenticate(string inputToken)
        {
            //Verify token
            var          tokenManager = new TokenManager();
            TokenContent tokenContent = tokenManager.VerifyToken(inputToken);

            //Check if verification worked
            if (tokenManager.Errored)
            {
                Errored = true;
                ErrorMessages.Add(tokenManager.ErrorMessage);
                return(null);
            }

            //Refresh token
            string        token = tokenManager.CreateToken(tokenContent.UserId);
            Authorization authorizationData;

            try
            {
                using (mulContext context = new mulContext())
                {
                    Authorizer authorizer = new Authorizer();
                    Users      user       = context.Users.FirstOrDefault(o => o.Id == tokenContent.UserId);
                    authorizationData = authorizer.GetAuthorization(context, user);
                }
            }
            catch (Exception Ex)
            {
                Errored = true;
                ErrorMessages.Add(Ex.Message);
                return(null);
            }

            var output = new AuthenticatedDto
            {
                Token      = token,
                Authorized = authorizationData
            };

            return(output);
        }