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); } }
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); }
public async Task <IHttpActionResult> Authenticate([FromBody] MobileAppRequestViewModel <object> message) { if (message == null || await IsUserAuthorized(message) == null) { return(Unauthorized()); } return(Ok()); }