예제 #1
0
        private static async Task <MobileApplicationUser> IsUserAuthorized <T>(MobileAppRequestViewModel <T> message)
        {
            if (string.IsNullOrEmpty(message?.Username) || string.IsNullOrEmpty(message.Thumbprint))
            {
                return(null);
            }

            using (var context = new ConnectContext())
            {
                var user = await context.MobileApplicationUsers.FirstOrDefaultAsync(u => u.Username == message.Username && u.Thumbprint == message.Thumbprint);

                if (user != null)
                {
                    user.EmailAddress = message.EmailAddress;
                    return(user.IsAuthorized ? user : null);
                }

                user = context.MobileApplicationUsers.Add(new MobileApplicationUser
                {
                    Username     = message.Username,
                    Thumbprint   = message.Thumbprint,
                    EmailAddress = message.EmailAddress,
                    IsAuthorized = true
                });
                await context.SaveChangesAsync();

                return(user);
            }
        }
예제 #2
0
        private static MobileAppRequestViewModel <T> MapQcReport <T>(NameValueCollection formData) where T : new()
        {
            var result = new MobileAppRequestViewModel <T>
            {
                Username     = formData["message[username]"],
                EmailAddress = formData["message[emailAddress]"],
                Thumbprint   = formData["message[thumbprint]"],
                Data         = new T()
            };

            foreach (var originalKey in formData.AllKeys)
            {
                var actualKey = ProcessKey(originalKey);
                if (actualKey != null)
                {
                    var pi = typeof(T).GetProperty(actualKey, BindingFlags.Public | BindingFlags.Instance);
                    if (pi != null)
                    {
                        pi.SetValue(result.Data, ProcessFormDataItem(pi.PropertyType, formData[originalKey]), null);
                    }
                }
            }

            return(result);
        }
예제 #3
0
        public async Task <IHttpActionResult> Authenticate([FromBody] MobileAppRequestViewModel <object> message)
        {
            if (message == null || await IsUserAuthorized(message) == null)
            {
                return(Unauthorized());
            }

            return(Ok());
        }