public object Update(string email, IFormCollection collection)
        {
            string oldPassword = PasswordUtils.MD5Crypt(collection["oldPassword"]);
            string newPassword = PasswordUtils.MD5Crypt(collection["newPassword"]);

            var dbFactory = new AdminDataContextFactory(dataProvider: SQLiteTools.GetDataProvider(), connectionString: ConnectionString);

            Task <Admin> admin;

            using (var db = dbFactory.Create())
            {
                admin = db.GetTable <Admin>().FirstOrDefaultAsync(c => c.Email.Equals(email) && c.Password.Equals(oldPassword));
                if (admin.Result != null)
                {
                    db.Update(new Admin {
                        Email = email, Password = newPassword
                    });
                    return("Password changed");
                }
                else
                {
                    return("Old password wrong, or an error occurred.");
                }
            }
        }
        public async Task <IActionResult> Index(IFormCollection collection)
        {
            string email    = collection["email"];
            string password = PasswordUtils.MD5Crypt(collection["password"]);

            var dbFactory = new AdminDataContextFactory(dataProvider: SQLiteTools.GetDataProvider(), connectionString: ConnectionString);

            Task <Admin> admin;

            using (var db = dbFactory.Create())
                admin = db.GetTable <Admin>().FirstOrDefaultAsync(c => c.Email.Equals(email) && c.Password.Equals(password));

            if (admin.Result != null)
            {
                ViewBag.AdminEmail = email;
                return(View(new DoctorsPatients {
                    Doctors = await DoctorController.Read(), Patients = await PatientCollectionController.Read()
                }));
            }
            else
            {
                TempData["ErrorAdminMessage"] = "Mail or password wrong";
                return(Redirect("~/signin"));
            }
        }
        public List <Admin> Read()
        {
            var dbFactory = new AdminDataContextFactory(dataProvider: SQLiteTools.GetDataProvider(), connectionString: ConnectionString);

            List <Admin> admins = new List <Admin>();

            using (var db = dbFactory.Create())
            {
                admins = db.GetTable <Admin>().ToList();
            }

            return(admins);
        }
        public object Create(IFormCollection collection)
        {
            string email = collection["mailNewAdmin"];
            string passwordNotCrypted = PasswordUtils.PasswordGenerator();
            string password           = PasswordUtils.MD5Crypt(passwordNotCrypted);
            var    dbFactory          = new AdminDataContextFactory(dataProvider: SQLiteTools.GetDataProvider(), connectionString: ConnectionString);

            using (var db = dbFactory.Create())
            {
                db.InsertOrReplace(new Admin {
                    Email = email, Password = password
                });

                try
                {
                    (new Emailer(MailData)).SendEmail(email, "Congratulations! You have just become a layw administrator. Your login data:\n" +
                                                      "Mail: " + email + "\n" + "Password: "******"\n" +
                                                      "Remember to change your password. Thank you for your help.\n\nTeam LAYW", "Team LAYW");
                }
                catch (SmtpException)
                {
                    db.Delete(new Admin {
                        Email = email, Password = password
                    });
                    return("Error. Maybe the inserted email is invalid, or there are connection errors. Try again.");
                }
                catch (FormatException)
                {
                    db.Delete(new Admin {
                        Email = email, Password = password
                    });
                    return("Invalid email format");
                }
            }
            return("Successfully added");
        }
Example #5
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.Configure <Kendo>(Configuration.GetSection("kendo"));
            services.Configure <Theme>(Configuration.GetSection("theme"));
            services.Configure <Logo>(Configuration.GetSection("logo"));
            services.Configure <ChartGoalPatientPageInfo>(Configuration.GetSection("chart-goal-patient-page-info"));
            services.Configure <ChartHomepageInfo>(Configuration.GetSection("chart-homepage-info"));

            var settingsLaywGmail = Configuration.GetSection("layw-gmail-data").Get <MailData>();

            services.AddSingleton(settingsLaywGmail);

            var settingsDoctorAccount = Configuration.GetSection("doctor-account").Get <DoctorAccount>();

            services.AddSingleton(settingsDoctorAccount);

            var settingsServerIP = Configuration.GetSection("server-ip").Get <ServerIP>();

            services.AddSingleton(settingsServerIP);

            var settingsJsonStructure = Configuration.GetSection("json-structure").Get <JsonStructure>();

            services.AddSingleton(settingsJsonStructure);

            var settingsDb = Configuration.GetConnectionString("layw-db");

            services.AddSingleton(settingsDb);

            var settingsHomepageChartInfo = Configuration.GetSection("chart-homepage-info").Get <ChartHomepageInfo>();

            services.AddSingleton(settingsHomepageChartInfo);

            services.AddSingleton(new MQTTClient(Configuration.GetSection("mqtt-info").Get <MQTTInfo>(), settingsJsonStructure));

            services.AddAuthentication(options =>
            {
                options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            })

            .AddCookie(options =>
            {
                options.LoginPath  = "/login";
                options.LogoutPath = "/signout";
            })

            .AddGoogle(options =>
            {
                var configuration    = Configuration.GetSection("google-codes").Get <OAuthCodes>();
                options.ClientId     = configuration.ClientId;
                options.ClientSecret = configuration.ClientSecret;

                options.Events = new OAuthEvents
                {
                    OnCreatingTicket = context =>
                    {
                        Uri apiRequestUri = new Uri("https://www.googleapis.com/oauth2/v2/userinfo?access_token=" + context.AccessToken);
                        dynamic result    = JsonConvert.DeserializeObject(APIUtils.Get(apiRequestUri.ToString()).ToString());

                        context.Identity.AddClaim(new Claim(ClaimTypes.Uri, (string)result.picture, ClaimValueTypes.String, "Google"));
                        return(Task.FromResult(0));
                    }
                };
            })

            .AddFacebook(options =>
            {
                var configuration    = Configuration.GetSection("facebook-codes").Get <OAuthCodes>();
                options.ClientId     = configuration.ClientId;
                options.ClientSecret = configuration.ClientSecret;

                options.Events = new OAuthEvents
                {
                    OnCreatingTicket = context =>
                    {
                        Uri apiRequestUri = new Uri("https://graph.facebook.com/me/picture?redirect&type=large&access_token=" + context.AccessToken);
                        dynamic result    = JsonConvert.DeserializeObject(APIUtils.Get(apiRequestUri.ToString()).ToString());

                        context.Identity.AddClaim(new Claim(ClaimTypes.Uri, (string)result.data.url, ClaimValueTypes.String, "Facebook"));
                        return(Task.FromResult(0));
                    }
                };
            });

            services.AddSession(options =>
            {
                options.Cookie.Name = ".Layw.Session";
            });

            var dbFactory = new AdminDataContextFactory(
                dataProvider: SQLiteTools.GetDataProvider(),
                connectionString: Configuration.GetConnectionString("layw-db")
                );

            services.AddSingleton <IDataContextFactory <AdminDataContext> >(dbFactory);
            SetupDatabase(dbFactory);

            services.AddSignalR();

            services.AddMvc();
        }