string doLogin(string email, string clave, string grupo) { string ret = ""; Grupo g = app.getGrupo(grupo); lock (g) { Arbol a = g.arbol; g.ts = DateTime.Now; Usuario u = g.getUsuario(email, clave); if (u != null && u.habilitado) { //login correcto //devuelvo el arbol personal con las flores de este usuario y sus modelos a.actualizarModelosEnUso(); //knowtypes para modelos List <Type> tipos = new List <Type>(); tipos.Add((new Alerta()).GetType()); foreach (Modelo m in g.organizacion.getModelosDocumento()) { tipos.Add(m.GetType()); } foreach (ModeloEvaluacion m in g.organizacion.getModelosEvaluacion()) { tipos.Add(m.GetType()); } ret = "{\"msg\":\"\", \"grupo\":" + g.toJson() + ", "; ret += "\"modelos\":" + Tools.toJson(g.organizacion.getModelosDocumento(), tipos) + ", "; ret += "\"modelosEvaluacion\":" + Tools.toJson(g.organizacion.getModelosEvaluacion(), tipos) + ", "; ret += "\"arbolPersonal\":" + Tools.toJson(a.getArbolPersonal(u.email)) + "}"; u.lastLogin = DateTime.Now; } else if (u != null && !u.habilitado) { app.addLog("login", Request.UserHostAddress, grupo, email, "fail!"); throw new appException(Tools.tr("Usuario no habilitado", grupo, g.idioma)); } else { app.addLog("login", Request.UserHostAddress, grupo, email, "fail!"); throw new appException(Tools.tr("Usuario o clave incorrectos", grupo, g.idioma)); } //envio mails a usuarios inactivos verifyInactivos(g); return(ret); } }