public void Configuration(IAppBuilder app) { // Any connection or hub wire up and configuration should go here app.MapSignalR(); MongoCRUD database = new MongoCRUD("UserBase"); database.DeleteRecords <SessionModel>("Sessions"); }
// Logout method which removes relevant sessions public void Logout(string sessionId) { MongoCRUD database = new MongoCRUD("UserBase"); var sessionList = database.LoadRecords <SessionModel>("Sessions"); foreach (var SessionModel in sessionList) { if (sessionId == SessionModel.Id.ToString()) { database.DeleteRecordById <SessionModel>("Sessions", SessionModel.Id.ToString()); Clients.All.RefreshPage(); } } }
// Send method which identifies the sender and stores messages within MongoDB and broadcasts messages to all active clients public void Send(string sessionId, string message) { if (message != "") { MongoCRUD database = new MongoCRUD("UserBase"); var thisUser = database.LoadRecordById <SessionModel>("Sessions", sessionId); var username = thisUser.usermodel.Username; MessageModel messagemodel = new MessageModel { Message = message, usermodel = thisUser.usermodel, MessageTime = new BsonDateTime(DateTime.Now) }; database.InsertRecord("Messages", messagemodel); // Call the broadcastMessage method to update clients Clients.All.broadcastMessage(username, message); } }
// Load method which references MongoDB database and loads lists of messages and active session users public void Load() { MongoCRUD database = new MongoCRUD("UserBase"); var messageList = database.LoadRecords <MessageModel>("Messages"); foreach (var MessageModel in messageList) { Clients.Caller.broadcastMessage(MessageModel.usermodel.Username, MessageModel.Message); } var sessionlist = database.LoadRecords <SessionModel>("Sessions"); foreach (var SessionModel in sessionlist) { Clients.Caller.broadcastActiveUser(SessionModel.usermodel.Username); } }
// Login method with authentication and storage of user within MongoDB public string Login(string username, string password) { UserModel usermodel = new UserModel { Username = username, Password = password }; if (usermodel.Username == "" || usermodel.Password == "") { Console.WriteLine("empty fields"); return("false"); } else { // Creating session upon login success MongoCRUD database = new MongoCRUD("UserBase"); SessionModel sessionmodel = new SessionModel { Id = Context.ConnectionId, usermodel = usermodel }; var userList = database.LoadRecords <UserModel>("Users"); foreach (var UserModel in userList) { if (usermodel.Username == UserModel.Username) { if (usermodel.Password == UserModel.Password) { database.InsertRecord("Sessions", sessionmodel); Clients.All.RefreshPage(); return(sessionmodel.Id.ToString()); } else { return("false"); } } } database.InsertRecord("Users", usermodel); database.InsertRecord("Sessions", sessionmodel); Clients.All.RefreshPage(); return(sessionmodel.Id.ToString()); } }
// Clear method which deletes all sessions public void Clear() { MongoCRUD database = new MongoCRUD("UserBase"); database.DeleteRecords <SessionModel>("Sessions"); }