# Roles - user - betatester - vip - employee - franchise - admin - developer User can belong to none, one, or several groups ``` /me { "data": { "firstName": "name", "lastName": "lastName", "cognitoId": "cognitoId", "email": "email@gmail.com", "role": [ "user", "betaTester", "developer", "admin" ] }, "success": true } ``` # Current use cases ## AdminUI **TBD: Do we need a proxy between adminUI and services to verify permissions?** AdminUI used through web-app and will use multiple services - AWS - Hygraph - Rudderstack - hubspot? Login: - Can we use the current login method? (phonenumber + otp) -> 'custom:platform':"Admin" ? ``` export const signIn = async (phone: string): Promise<IAuthResponse> => await Auth.signIn({ username: phone, attributes: { 'custom:platform': Platform.OS } }); ``` - Initial need for roles, only users with following roles can login: - franchise - developer - admin AdminUI Views: - AdminApp will handle what views users can see with what roles - AdminApp views (most data requested from hygraph for now): - Locations, coupons, campaings, products, staticpages... - data from hygraph - Analytics/statistics - data from rudderstack/steve - Users - data from aws/hubspot(?) - editing userdata needs admin role at aws endpoint --- ## Application FE ### 1. Homescreen in future might have more boxes depending on user roles ``` if user.roles.has('betatester') show assignment box ``` ### 2. Coupons - userRole field added to hygraph - Show different coupons depending on user roles (more filtering) - many to many comparison: ``` if user.roles.some(item => coupon.userRole.includes(item)) show coupon ``` gql query: ``` query GetCouponsByType($active: Boolean, $type: CouponType, $lang: Locale!) { coupons( where: { active: $active, type: $type } orderBy: order_ASC locales: [$lang, en] first: 100 ) { couponId type title couponImage { url } longDescription { html } exceptions priceView singleUse posReply theme userRole } } ``` response: ``` ... "theme": { "type": "", "theme": "", "background-color": "", "background-image": "" }, "userRole": [ "user", "admin" ] ```