コード例 #1
0
ファイル: Auth.cs プロジェクト: askho/InventoryManagerOData
        /// <summary>
        /// Decodes a encoded key value pair in base64 and returns it as a 
        /// username and password.
        /// Sample hash: "dXNlcm5hbWU6cGFzcw=="
        /// Decodaed: "username:pass"
        /// The key will be "username"
        /// The value will be "pass"
        /// </summary>
        /// <param name="hash">A base 64 hash</param>
        /// <returns>Key value pair the key is the user, the value is the pass</returns>
        public static KeyValuePair<string, string> DecodeHash(string hash)
        {
            InventoryDatabaseEntities db = new InventoryDatabaseEntities();
            byte[] data = Convert.FromBase64String(hash);
            string decoded = Encoding.UTF8.GetString(data);

            string[] userPass = decoded.Split(':');
            return new KeyValuePair<string, string>(userPass[0], userPass[1]);
        }
コード例 #2
0
ファイル: Auth.cs プロジェクト: askho/InventoryManagerOData
 /// <summary>
 /// Checks with the backend to ensure that the user exists.
 /// </summary>
 /// <param name="login">Key value pair, the key is the username, the value is the password</param>
 /// <returns>True or false based on if auth was a success</returns>
 public static bool Authenticate(KeyValuePair<string, string> login)
 {
     InventoryDatabaseEntities db = new InventoryDatabaseEntities();
     string username = login.Key;
     string pass = login.Value;
     Models.User user = db.Users.Where(u => u.userName == username).First();
     if (Auth.verifyPassword(pass, user.password))
     {
         return true;
     }
     return false;
 }
コード例 #3
0
ファイル: Auth.cs プロジェクト: askho/InventoryManagerOData
        /// <summary>
        /// Authenticate via a token.
        /// </summary>
        /// <param name="token">The token to authenticate.</param>
        /// <returns>authentication status success/failure</returns>
        public static bool Authenticate(string token)
        {
            InventoryDatabaseEntities db = new InventoryDatabaseEntities();
            byte[] data = Convert.FromBase64String(token);
            string decoded = Encoding.UTF8.GetString(data);

            string[] userPass = decoded.Split(':');
            string username = userPass[0];
            Models.User user = db.Users.Where(u => u.userName == username).First();
            Debug.WriteLine(username + " : " + userPass[1]);
            if (user.authDate.HasValue && (DateTime.Now - user.authDate.Value).TotalMinutes < 30)
            {
                if (userPass[1] == user.authToken)
                {
                    user.authDate = DateTime.Now;
                    db.SaveChanges();
                    return true;
                }
            }
            return false;

        }
コード例 #4
0
ファイル: Auth.cs プロジェクト: askho/InventoryManagerOData
 public static string generateToken(string username)
 {
     InventoryDatabaseEntities db = new InventoryDatabaseEntities();
     Models.User user = db.Users.Where(u => u.userName == username).First();
     string token = Convert.ToBase64String(Guid.NewGuid().ToByteArray());
     user.authToken = token;
     user.authDate = DateTime.Now;
     db.SaveChanges();
     return token;
 }