public override void Execute(IRequest req, IResponse res, object requestDto)
    {
        // Get the correct repository to authenticate against
        var repositories            = HostContext.TryResolve <MyUserRepository[]>();
        MyUserRepository repository = null;

        if (repositories != null)
        {
            repository = repositories.FirstOrDefault(r => r.Name == _repositoryName);
        }
        // Determine if request has basic authentication
        var authorization = req.GetHeader(HttpHeaders.Authorization);

        if (repository != null && !String.IsNullOrEmpty(authorization) && authorization.StartsWith("basic", StringComparison.OrdinalIgnoreCase))
        {
            // Decode the credentials
            var credentials = Encoding.UTF8.GetString(Convert.FromBase64String(authorization.Substring(6))).Split(':');
            if (credentials.Length == 2)
            {
                // Try and match the credentials to a user
                var password = repository.Users.GetValueOrDefault(credentials[0]);
                if (password != null && password == credentials[1])
                {
                    // Credentials are valid
                    return;
                }
            }
        }
        // User requires to authenticate
        res.StatusCode = (int)HttpStatusCode.Unauthorized;
        res.AddHeader(HttpHeaders.WwwAuthenticate, string.Format("basic realm=\"{0}\"", _realmName));
        res.EndRequest();
    }
예제 #2
0
 public UnitOfWork(BulkyBook_DBEntities db)
 {
     _db           = db;
     Categories    = new CategoryRepository(_db);
     CoverTypes    = new CoverTypeRepository(_db);
     Products      = new ProductRepository(_db);
     Companies     = new CompanyRepository(_db);
     MyUsers       = new MyUserRepository(_db);
     ShoppingCarts = new ShoppingCartRepository(_db);
     OrderDetails  = new OrderDetailRepository(_db);
     OrderHeaders  = new OrderHeaderRepository(_db);
 }
예제 #3
0
        public IHttpActionResult Authenticate(ReqModel user)
        {
            ResModel userResponse = new ResModel();



            IHttpActionResult   response;
            HttpResponseMessage responseMsg = new HttpResponseMessage();
            bool isUsernamePasswordValid    = false;

            if (user != null)
            {
                MyUserRepository repo   = new MyUserRepository();
                MyUser           myuser = repo.loadUserByUserNamePassword(user.Username, user.Password);
                if (myuser.Name == user.Username && myuser.Password == user.Password)
                {
                    isUsernamePasswordValid = true;
                }
                else
                {
                    isUsernamePasswordValid = false;
                }
            }

            //if credentials are valid
            if (isUsernamePasswordValid)
            {
                string token = createToken(user.Username);
                //return the token
                return(Ok <string>(token));
            }
            else
            {
                // if credentials are not valid send unauthorized status code in response
                userResponse.responseMsg.StatusCode = HttpStatusCode.Unauthorized;
                response = ResponseMessage(userResponse.responseMsg);
                return(response);
            }
        }