Implement authentication levels and cancan