public List<Shared.Dto.Message> FetchMessages(string sessionKey)
        {
            var dbContext = DbContextFactory.GetContext();

            var sessionService = new SessionService();
            var user = sessionService.GetUser(sessionKey);
            if (user == null) return null;

            var messages = dbContext.Messages
                .Where(m => m.RecipientId == user.Id);

            var dtoMessages = messages.Select(e => new Shared.Dto.Message
            {
                Body = e.Content,
                ReceiverId = e.RecipientId,
                SenderId = e.SenderId,
                DateSent = e.SentTime,
                SymmetricKey = e.SessionKey,
                Iv = e.InitVector,
                DigitalSignature = e.Signature
            }).ToList();
            messages.DeleteAll();
            dbContext.SaveChanges();
            return dtoMessages;
        }
        public bool SendContact(string sessionKey, Shared.Dto.Contact contact)
        {
            var dbContext = DbContextFactory.GetContext();

            var sessionService = new SessionService();
            var user = sessionService.GetUser(sessionKey);
            if (user == null) return false;

            User recipient;
            try
            {
                recipient =
                    dbContext.Users.Single(u => u.Id == contact.ReceiverId);
            }
            catch (Exception)
            {
                return false;
            }

            var newContact = new Contact
            {
                PublicKey = contact.PublicKey,
                Name = contact.Name,
                Sender = user,
                Recipient = recipient
            };

            dbContext.Add(newContact);
            dbContext.SaveChanges();

            var userService = new PushService();
            userService.Push(recipient, "Recieved new contact!");

            return true;
        }
 public IHttpActionResult GetUserId(string sessionKey)
 {
     var sessionService = new SessionService();
     var user = sessionService.GetUser(sessionKey);
     if (user != null) return Ok(user.Id);
     return Unauthorized();
 }
 public bool SetPushAllowed(string sessionKey, bool isPushAllowed)
 {
     var dbContext = DbContextFactory.GetContext();
     var sessionService = new SessionService();
     var user = sessionService.GetUser(sessionKey);
     if (user == null) return false;
     user.AllowPush = isPushAllowed;
     dbContext.SaveChanges();
     return true;
 }
        public bool RegisterPushToken(string sessionKey, string pushToken)
        {
            var dbContext = DbContextFactory.GetContext();
            var sessionService = new SessionService();
            var user = sessionService.GetUser(sessionKey);
            if (user == null) return false;
            user.PushToken = pushToken;

            dbContext.SaveChanges();

            return true;
        }
        public string Login(string deviceId, string password)
        {
            var dbContext = DbContextFactory.GetContext();
            var sessionService = new SessionService();
            var user = dbContext.Users.SingleOrDefault(u => u.DeviceId == deviceId);

            if (user != null
                && CryptoService.ValidatePassword(user.PasswordHash, password))
            {
                return sessionService.CreateSession(user);
            }
            else
            {
                return null;
            }
        }
        public string Login(string deviceId, string password)
        {
            var dbContext      = DbContextFactory.GetContext();
            var sessionService = new SessionService();
            var user           = dbContext.Users.SingleOrDefault(u => u.DeviceId == deviceId);

            if (user != null &&
                CryptoService.ValidatePassword(user.PasswordHash, password))
            {
                return(sessionService.CreateSession(user));
            }
            else
            {
                return(null);
            }
        }
        public bool SendMessage(string sessionKey, Shared.Dto.Message msg)
        {
            var dbContext = DbContextFactory.GetContext();

            var sessionService = new SessionService();
            var user           = sessionService.GetUser(sessionKey);

            if (user == null)
            {
                return(false);
            }

            User recipient;

            try
            {
                recipient =
                    dbContext.Users.Single(u => u.Id == msg.ReceiverId);
            }
            catch (Exception)
            {
                return(false);
            }

            var newMsg = new Message
            {
                Content    = msg.Body,
                Sender     = user,
                Recipient  = recipient,
                SentTime   = msg.DateSent,
                Signature  = msg.DigitalSignature,
                SessionKey = msg.SymmetricKey,
                InitVector = msg.Iv
            };

            var userService = new PushService();

            userService.Push(recipient, "You have new message");

            dbContext.Add(newMsg);
            dbContext.SaveChanges();

            return(true);
        }
        public bool SendMessage(string sessionKey, Shared.Dto.Message msg)
        {
            var dbContext = DbContextFactory.GetContext();

            var sessionService = new SessionService();
            var user = sessionService.GetUser(sessionKey);
            if (user == null)
            {
                return false;
            }

            User recipient;
            try
            {
                recipient =
                    dbContext.Users.Single(u => u.Id == msg.ReceiverId);
            }
            catch (Exception)
            {
                return false;
            }

            var newMsg = new Message
            {
                Content = msg.Body,
                Sender = user,
                Recipient = recipient,
                SentTime = msg.DateSent,
                Signature = msg.DigitalSignature,
                SessionKey = msg.SymmetricKey,
                InitVector = msg.Iv

            };

            var userService = new PushService();
            userService.Push(recipient, "You have new message");

            dbContext.Add(newMsg);
            dbContext.SaveChanges();

            return true;
        }
        public bool SendContact(string sessionKey, Shared.Dto.Contact contact)
        {
            var dbContext = DbContextFactory.GetContext();

            var sessionService = new SessionService();
            var user           = sessionService.GetUser(sessionKey);

            if (user == null)
            {
                return(false);
            }


            User recipient;

            try
            {
                recipient =
                    dbContext.Users.Single(u => u.Id == contact.ReceiverId);
            }
            catch (Exception)
            {
                return(false);
            }

            var newContact = new Contact
            {
                PublicKey = contact.PublicKey,
                Name      = contact.Name,
                Sender    = user,
                Recipient = recipient
            };

            dbContext.Add(newContact);
            dbContext.SaveChanges();

            var userService = new PushService();

            userService.Push(recipient, "Recieved new contact!");

            return(true);
        }
        public List<Shared.Dto.Contact> FetchContacts(string sessionKey)
        {
            var dbContext = DbContextFactory.GetContext();

            var sessionService = new SessionService();
            var user = sessionService.GetUser(sessionKey);
            if (user == null) return null;

            var contacts = dbContext.Contacts
                .Where(m => m.Recipient.Id == user.Id);

                var dtoContacts = contacts
                .Select(e => new Shared.Dto.Contact
                {
                    SenderId = e.SenderId,
                    Name = e.Name,
                    PublicKey = e.PublicKey
                }).ToList();

            contacts.DeleteAll();
            dbContext.SaveChanges();
            return dtoContacts;
        }
Exemple #12
0
 public bool IsPushAllowed(string sessionKey)
 {
     var sessionService = new SessionService();
     var user = sessionService.GetUser(sessionKey);
     return user.AllowPush;
 }