Needs to create user if doesn't exist for the code. Needs new role/permission stuff do be able to do this.