added use of cancan to handle permissions and authorization