示例#1
0
func (Data *Data) Manage_Login(request *list.Element, Db *sql.DB, Dlist *devices.All_Devices) (er error) {
	req := request.Value.(*protocol.Request)
	er = nil
	flag := true
	var answer []byte

	if req.Rtype != TYPELOG {
		er = errors.New("Bad type to Manage_Login")
		answer = Data.Manage_ack(TYPELOG, 0, int32(0))
	} else {
		if Data.Device == nil {
			Data.Device, er = Dlist.GetDevice(request, Db, Data.Lst_users)
		}
		if er == nil {
			device := Data.Device.Value.(*devices.Device)
			if len(req.Spec.(protocol.Log).Email) <= 1 {
				Data.Logged = DEFAULTUSER
				Data.User = device.UserDefault
			} else {
				Data.User = Data.Lst_users.Check_user(request, Db, device.Historic)
				if Data.User == nil {
					flag = false
					Data.Logged = DEFAULTUSER
					device.UserSpec = nil
					Data.User = device.UserDefault
				} else {
					Data.Logged = USERLOGGED
					device.UserSpec = Data.User
					device.AddUserSpecOnHistory(Data.User)
				}
			}
		}
		if er != nil {
			answer = Data.Manage_ack(TYPELOG, 0, int32(0))
		} else if flag == false {
			answer = Data.Manage_ack(TYPELOG, 0, int32(2))
		} else {
			answer = Data.Manage_ack(TYPELOG, 0, int32(1))
		}
	}
	Data.Lst_asw.PushBack(answer)
	return er
}