Confusion on challenge 22 DEX

  function approve(address spender, uint amount) public {
    SwappableToken(token1).approve(spender, amount);
    SwappableToken(token2).approve(spender, amount);
  }

How does the contract approve on our wallet ?? i thought it is not possible to have a proxy contract approve on your behalf , right ?