garethrhughes

Magic

Aug 25th, 2016
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.03 KB | None | 0 0
  1. using CMS.CMSHelper;
  2. using CMS.GlobalHelper;
  3. using CMS.SettingsProvider;
  4. using CMS.SiteProvider;
  5. using System;
  6. using System.Configuration;
  7. using System.IO;
  8. using System.Security.Cryptography;
  9. using System.Text;
  10. using System.Web;
  11. using System.Web.Http;
  12. using ws.myadvantage.com.au.Model;
  13.  
  14. namespace ws.myadvantage.com.au.Controllers
  15. {
  16.     static class KenticoStateManager
  17.     {
  18.         private static bool Connected { get; set; }
  19.         public static void Init()
  20.         {
  21.             if (!Connected)
  22.             {
  23.                 DataConnectionFactory.ConnectionString = ConfigurationManager.AppSettings["ConnectionString"];
  24.                 CMSContext.Init();
  25.                 Connected = true;
  26.             }
  27.         }
  28.     }
  29.  
  30.     [Route("user")]
  31.     public class UserController : ApiController
  32.     {
  33.         public UserController()
  34.         {
  35.             KenticoStateManager.Init();
  36.         }
  37.  
  38.         public Token Get()
  39.         {
  40.             return new Token {Value = Authenticate(QueryHelper.GetString("username", ""), QueryHelper.GetString("password", "")) };
  41.         }
  42.  
  43.         private string Authenticate(string username, string password)
  44.         {
  45.             var userInfo = UserInfoProvider.AuthenticateUser(username, password,
  46.                 ConfigurationManager.AppSettings["SiteName"]);
  47.  
  48.             if (userInfo == null || userInfo.UserIsEditor || userInfo.UserIsGlobalAdministrator) return string.Empty;
  49.  
  50.             var token = userInfo.UserID.ToString() + "|" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss tt");
  51.             var key = Encoding.ASCII.GetBytes(ConfigurationManager.AppSettings["CryptoKey"]);
  52.  
  53.             var cryptoServiceProvider = new DESCryptoServiceProvider();
  54.             var encryptor = cryptoServiceProvider.CreateEncryptor(key, key);
  55.             var buffer = Encoding.ASCII.GetBytes(token);
  56.             var encryptedToken = encryptor.TransformFinalBlock(buffer, 0, buffer.Length);
  57.  
  58.             return HttpUtility.UrlEncode(Convert.ToBase64String(encryptedToken));
  59.         }
  60.  
  61.     }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment