initial commit
[CPE_learningsite] / CPE / CPE.App / CPE.App.Web / Helpers / VerifyAccess.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Web;
5 using CPE.App.Web.Models;
6 using System.Security.Cryptography;
7 using System.Configuration;
8 using System.Text;
9 using CPE.App.Web.Code;
10
11 namespace CPE.App.Web.Helpers
12 {
13     public class VerifyAccess
14     {
15         public static bool IsValid(PurchasedCourse course)
16         {
17             return (((course.PurchaseDate).AddYears(1)) > DateTime.UtcNow);
18         }
19         public static bool VerifyTicket(string ticket, string contenturl, string firstname, string lastname, string email)
20         {
21             string secret = ConfigurationManager.AppSettings["CPE.SecretWord"];
22             string seed = (contenturl + firstname + lastname + email + secret).ToLower();
23             return ticket.Equals(sha256_hash(seed).Substring(4, 6));
24         }
25         public static bool VerifyTicket(string ticket, string contenturl, string firstname, string lastname, string email, string purchasedate)
26         {
27             string secret = ConfigurationManager.AppSettings["CPE.SecretWord"];
28             string seed = (contenturl + firstname + lastname + email + purchasedate + secret).ToLower();
29             return ticket.Equals(sha256_hash(seed).Substring(4, 6));
30         }
31         public static bool AccessBlocked(PurchasedCourse course)
32         {
33             BlockedPurchase blockedCourse = BaseController.Database.BlockedPurchases.SingleOrDefault(bc => bc.Ticket == course.Ticket && bc.ContentUrl == course.ContentUrl && bc.Email == course.Email);
34             return (blockedCourse != null);
35         }
36         public static string generateTicket(string contenturl, string firstname, string lastname, string email, string purchasedate)
37         {
38             string secret = ConfigurationManager.AppSettings["CPE.SecretWord"];
39             string seed = (contenturl + firstname + lastname + email + purchasedate + secret).ToLower();
40             return sha256_hash(seed).Substring(4, 6);
41         }
42         private static String sha256_hash(String value)
43         {
44             using (SHA256 hash = SHA256Managed.Create())
45             {
46                 return String.Join("", hash
47                   .ComputeHash(Encoding.UTF8.GetBytes(value))
48                   .Select(item => item.ToString("x2")));
49             }
50         }
51     }
52 }