view client/src/components/importconfiguration/types/Distancemarksvirtual.vue @ 3515:c64c47ff2ab1 password

import: fix for passwordleakage. No passwords are received/sent if configuration is edited.
author Thomas Junk <thomas.junk@intevation.de>
date Wed, 29 May 2019 09:56:42 +0200
parents 439e1865a2d2
children
line wrap: on
line source

<template>
  <div>
    <div class="d-flex px-2">
      <div class="flex-column w-100">
        <div class="flex-row text-left">
          <small class="text-muted"> <translate>URL</translate> </small>
        </div>
        <div class="w-100">
          <input
            @input="urlChanged"
            class="url form-control form-control-sm"
            type="url"
            :value="url"
          />
        </div>
      </div>
    </div>
    <div v-if="!url" class="d-flex px-2">
      <small
        ><translate class="text-danger">Please enter a URL</translate></small
      >
    </div>
    <div class="d-flex px-2">
      <div class="flex-column mt-2 mr-3 w-50">
        <div class="flex-row text-left">
          <small class="text-muted"> <translate>Username</translate> </small>
        </div>
        <div class="w-100">
          <input
            @input="usernameChanged"
            class="username form-control form-control-sm"
            type="text"
            :value="username"
          />
        </div>
        <div v-if="!username" class="d-flex flex-row">
          <small
            ><translate class="text-danger"
              >Please enter a Username</translate
            ></small
          >
        </div>
      </div>
      <div class="flex-column mt-2 w-50">
        <div class="flex-row text-left">
          <small class="text-muted"> <translate>Password</translate> </small>
        </div>
        <div class="w-100 d-flex flex-row">
          <input
            @input="passwordChanged"
            class="pasword form-control form-control-sm"
            :type="showPassword"
            :value="password"
          />
          <span
            class="input-group-text ml-2"
            @click="passwordVisible = !passwordVisible"
          >
            <font-awesome-icon :icon="passwordVisible ? 'eye-slash' : 'eye'" />
          </span>
        </div>
        <div
          v-if="!password && !this.currentSchedule.id"
          class="d-flex flex-row"
        >
          <small
            ><translate class="text-danger"
              >Please enter a Password</translate
            ></small
          >
        </div>
      </div>
    </div>
  </div>
</template>

<script>
/* This is Free Software under GNU Affero General Public License v >= 3.0
 * without warranty, see README.md and license for details.
 *
 * SPDX-License-Identifier: AGPL-3.0-or-later
 * License-Filename: LICENSES/AGPL-3.0.txt
 *
 * Copyright (C) 2018 by via donau
 *   – Österreichische Wasserstraßen-Gesellschaft mbH
 * Software engineering by Intevation GmbH
 *
 * Author(s):
 * Thomas Junk <thomas.junk@intevation.de>
 */

import { mapState } from "vuex";
export default {
  name: "distancemarksvirtual",
  props: ["url", "username", "password"],
  data() {
    return {
      passwordVisible: false
    };
  },
  computed: {
    ...mapState("importschedule", [
      "importScheduleDetailVisible",
      "currentSchedule"
    ]),
    showPassword() {
      if (this.passwordVisible) return "text";
      return "password";
    }
  },
  methods: {
    urlChanged(e) {
      this.$emit("urlChanged", e.target.value);
    },
    usernameChanged(e) {
      this.$emit("usernameChanged", e.target.value);
    },
    passwordChanged(e) {
      this.$emit("passwordChanged", e.target.value);
    }
  }
};
</script>

<style></style>