예제 #1
0
        public IActionResult Singin(Singin singin)
        {
            using (var client = new SqlConnection(MyDatabase))
            {
                using (var command = new SqlCommand())
                {
                    command.Connection  = client;
                    command.CommandText = "SELECT * FROM Student where Student.IndexNumber=@ind ";
                    command.Parameters.AddWithValue("ind", singin.Login);
                    command.Parameters.AddWithValue("pass", singin.Haslo);
                    client.Open();
                    var qr = command.ExecuteReader();

                    while (qr.Read())
                    {
                        var pass = qr["Password"].ToString();
                        var salt = qr["Salt"].ToString();
                        if (HashedPass(singin.Haslo, salt) == pass)
                        {
                            qr.Close();
                            var refreshToken = Guid.NewGuid();
                            command.CommandText = "UPDATE Student SET Refreshtkn =@tkn where Student.IndexNumber=@ind ";
                            command.Parameters.AddWithValue("tkn", refreshToken);

                            command.ExecuteNonQuery();
                            nameid++;
                            var claims = new[] {
                                new Claim(ClaimTypes.NameIdentifier, "" + nameid),
                                new Claim(ClaimTypes.Name, singin.Login),
                                new Claim(ClaimTypes.Role, ""),
                                new Claim(ClaimTypes.Role, "student")
                            };

                            var key   = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["SecretKey"]));
                            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

                            var token = new JwtSecurityToken
                                        (
                                issuer: "Gakko",
                                audience: "Students",
                                claims: claims,
                                expires: DateTime.Now.AddMinutes(10),
                                signingCredentials: creds
                                        );
                            Console.WriteLine(refreshToken);
                            return(Ok(new
                            {
                                token = new JwtSecurityTokenHandler().WriteToken(token),
                                refreshToken
                            }));
                        }
                    }
                }
            }
            return(Unauthorized());
        }
예제 #2
0
            public static void UploadDataToYlmf(DataTable data)
            {
                if (data.Rows.Count > 0)
                {
                    Func <int, int> func = v =>
                    {
                        return(new int[] { 2, 4 }.Contains(v) ? 1 : 0);
                    };

                    foreach (DataRow dr in data.Rows)
                    {
                        try
                        {
                            var isLeaving = false;
                            if (dr["flow_stuFlowBackState"] != null)
                            {
                                if (dr["flow_stuFlowBackState"].ToString().Trim() != "-2")
                                {
                                    isLeaving = true;
                                }
                            }

                            var cardNo = string.Empty;
                            if (!isLeaving)
                            {
                                cardNo = dr["flow_stuEnterCardNumber"] == null ? string.Empty : dr["flow_stuEnterCardNumber"].ToString();
                            }
                            else
                            {
                                cardNo = dr["flow_stuBackCardNumber"] == null ? string.Empty : dr["flow_stuBackCardNumber"].ToString();
                            }

                            var singinTime = string.Empty;
                            if (!isLeaving)
                            {
                                singinTime = dr["flow_stuFlowEnterDate"] == null?DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
                                                 : Convert.ToDateTime(dr["flow_stuFlowEnterDate"].ToString()).ToString("yyyy-MM-dd HH:mm:ss");
                            }
                            else
                            {
                                singinTime = dr["flow_stuFlowEnterDate"] == null?DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
                                                 : Convert.ToDateTime(dr["flow_stuFlowBackDate"].ToString()).ToString("yyyy-MM-dd HH:mm:ss");
                            }

                            var status = "健康";
                            if (!isLeaving)
                            {
                                status = dr["state_flowStateName"] == null ? "健康" : dr["state_flowStateName"].ToString();
                            }
                            else
                            {
                                status = "再见";
                            }


                            Singin.SingIn(new SinginBean
                            {
                                schoolNum    = dr["gardenID"].ToString(),
                                serialNumber = dr["idx"].ToString(),
                                idNum        = cardNo,
                                singinTime   = singinTime,
                                status       = status,
                                studentId    = dr["info_stuNumber"].ToString(),
                                type         = !isLeaving ? 2 : 1, //和文档倒一下
                                fromtype     = func(dr["flow_stuModify"] == null ? 0 : Convert.ToInt32(dr["flow_stuModify"]))
                            });
                        }
                        catch (Exception ex)
                        {
                            SystemFramework.Util.WriteLog(ex.ToString(), SystemFramework.Util.EXCEPTION_LOG_TITLE);
                        }
                    }
                }
            }