mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
Merge branch 'master' into password-component
This commit is contained in:
commit
e30bc667d0
16
.github/workflows/test.yml
vendored
16
.github/workflows/test.yml
vendored
@ -50,13 +50,7 @@ jobs:
|
||||
##########################################################################
|
||||
- name: login server | Build `release` image
|
||||
run: |
|
||||
docker build --target release -t "gradido/login_server:release" -f ./login_server/Dockerfile login_server/
|
||||
#docker save "gradido/login_server:test" > /tmp/login_server.tar
|
||||
#- name: Upload Artifact
|
||||
# uses: actions/upload-artifact@v2
|
||||
#with:
|
||||
# name: docker-login-server-test
|
||||
#path: /tmp/login_server.tar
|
||||
docker build -t "gradido/login_server:release" -f ./login_server/Dockerfile login_server/
|
||||
|
||||
##############################################################################
|
||||
# JOB: DOCKER BUILD TEST COMMUNITY SERVER ####################################
|
||||
@ -251,7 +245,7 @@ jobs:
|
||||
##########################################################################
|
||||
- name: login server | Build `test` image
|
||||
run: |
|
||||
docker build --target test -t "gradido/login_server:test" -f ./login_server/Dockerfile login_server/
|
||||
docker build -t "gradido/login_server:test" -f ./login_server/Dockerfiles/ubuntu/Dockerfile.test login_server/
|
||||
##########################################################################
|
||||
# UNIT TESTS BACKEND LOGIN-SERVER #######################################
|
||||
##########################################################################
|
||||
@ -268,7 +262,7 @@ jobs:
|
||||
report_name: Coverage Backend Login
|
||||
type: lcov
|
||||
result_path: ./coverage/coverage.info
|
||||
min_coverage: 13
|
||||
min_coverage: 25
|
||||
token: ${{ github.token }}
|
||||
|
||||
##############################################################################
|
||||
@ -300,7 +294,7 @@ jobs:
|
||||
run: echo "::set-output name=id::$(docker network ls | grep github_network | awk '{ print $1 }')"
|
||||
id: network
|
||||
- name: Start Login-Server
|
||||
run: docker run --network ${{ steps.network.outputs.id }} --name=login-server -d gradido/login_server:default
|
||||
run: docker run --network ${{ steps.network.outputs.id }} --name=login-server -d gradido/login_server:with-config
|
||||
- name: get login-server container id
|
||||
run: echo "::set-output name=id::$(docker container ls | grep login_server | awk '{ print $1 }')"
|
||||
id: login_server_container
|
||||
@ -341,7 +335,7 @@ jobs:
|
||||
report_name: Coverage Backend Community
|
||||
type: phpunit
|
||||
result_path: ./coverage/coverage.info
|
||||
min_coverage: 10
|
||||
min_coverage: 14
|
||||
token: ${{ github.token }}
|
||||
|
||||
#test:
|
||||
|
||||
58
CHANGELOG.md
58
CHANGELOG.md
@ -4,8 +4,66 @@ All notable changes to this project will be documented in this file. Dates are d
|
||||
|
||||
Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
||||
|
||||
#### [1.1.1](https://github.com/gradido/gradido/compare/1.1.0...1.1.1)
|
||||
|
||||
- Auto deploy [`#580`](https://github.com/gradido/gradido/pull/580)
|
||||
- update transfer email text [`#574`](https://github.com/gradido/gradido/pull/574)
|
||||
- update mysql because tuple has changed [`#576`](https://github.com/gradido/gradido/pull/576)
|
||||
- Login fix pending transactions [`#578`](https://github.com/gradido/gradido/pull/578)
|
||||
- add test to prevent bug in future [`630d667`](https://github.com/gradido/gradido/commit/630d667e996870a1bf9aa9586b0467d58419e525)
|
||||
- use standard path. add nginx example [`ac249b4`](https://github.com/gradido/gradido/commit/ac249b46830a8039aec52d30b48084b50a264b6f)
|
||||
- add autodeploy bash scripts [`f49cf4d`](https://github.com/gradido/gradido/commit/f49cf4d7f8054d87efa1e12055a7ef0c6d3b9872)
|
||||
|
||||
#### [1.1.0](https://github.com/gradido/gradido/compare/1.0.2...1.1.0)
|
||||
|
||||
> 17 June 2021
|
||||
|
||||
- add first error additional as msg [`#573`](https://github.com/gradido/gradido/pull/573)
|
||||
- fix: Remove Grouping for Max Error [`#572`](https://github.com/gradido/gradido/pull/572)
|
||||
- fix: API Call for Reset Password [`#571`](https://github.com/gradido/gradido/pull/571)
|
||||
- Login reset password [`#570`](https://github.com/gradido/gradido/pull/570)
|
||||
- Hide unuse components in profil [`#566`](https://github.com/gradido/gradido/pull/566)
|
||||
- fix: Thousend Dividers on GDD Send Amount Field [`#567`](https://github.com/gradido/gradido/pull/567)
|
||||
- reorganisiere Dockerfiles [`#550`](https://github.com/gradido/gradido/pull/550)
|
||||
- hot fixes shown by test [`#551`](https://github.com/gradido/gradido/pull/551)
|
||||
- fix to big text ths [`#565`](https://github.com/gradido/gradido/pull/565)
|
||||
- feat: Trim Email on Blur [`#556`](https://github.com/gradido/gradido/pull/556)
|
||||
- Mobile UI send gdd form [`#562`](https://github.com/gradido/gradido/pull/562)
|
||||
- fix: Change Password Form [`#561`](https://github.com/gradido/gradido/pull/561)
|
||||
- change userdata button disable rules [`#548`](https://github.com/gradido/gradido/pull/548)
|
||||
- Change password require old password [`#519`](https://github.com/gradido/gradido/pull/519)
|
||||
- feat: Test Forget Password [`#546`](https://github.com/gradido/gradido/pull/546)
|
||||
- feat: Validate Change Username [`#545`](https://github.com/gradido/gradido/pull/545)
|
||||
- Remove base input example login vue [`#524`](https://github.com/gradido/gradido/pull/524)
|
||||
- Feature: Change Username [`#490`](https://github.com/gradido/gradido/pull/490)
|
||||
- feat: Toaster to Display Messages [`#512`](https://github.com/gradido/gradido/pull/512)
|
||||
- fix: Validation of GDD Send Amount Field [`#525`](https://github.com/gradido/gradido/pull/525)
|
||||
- Community coverage [`#496`](https://github.com/gradido/gradido/pull/496)
|
||||
- compare with last transaction sended [`#523`](https://github.com/gradido/gradido/pull/523)
|
||||
- remove check decays for being at least 100 GDD cent [`#526`](https://github.com/gradido/gradido/pull/526)
|
||||
- fix: Remove Target Date in Send Coins Request [`#518`](https://github.com/gradido/gradido/pull/518)
|
||||
- Feature profile page bugs [`#511`](https://github.com/gradido/gradido/pull/511)
|
||||
- fix: GDD Send Amount Input Field [`#491`](https://github.com/gradido/gradido/pull/491)
|
||||
- change transfer confirmation email [`#485`](https://github.com/gradido/gradido/pull/485)
|
||||
- Login wait on passwords with missing chars [`#487`](https://github.com/gradido/gradido/pull/487)
|
||||
- fix problem with create User [`#486`](https://github.com/gradido/gradido/pull/486)
|
||||
- Feature: Profile Page + Update API [`#474`](https://github.com/gradido/gradido/pull/474)
|
||||
- add new API Call checkUsername [`#482`](https://github.com/gradido/gradido/pull/482)
|
||||
- feat: Pagination Buttons for Transaction List [`#473`](https://github.com/gradido/gradido/pull/473)
|
||||
- Login-Server & Community-Server Coverage [`#472`](https://github.com/gradido/gradido/pull/472)
|
||||
- login without hedera [`#478`](https://github.com/gradido/gradido/pull/478)
|
||||
- fix: Show Correct Version Number in Footer [`#475`](https://github.com/gradido/gradido/pull/475)
|
||||
- refactor: Remove Element-UI [`#476`](https://github.com/gradido/gradido/pull/476)
|
||||
- remove components Charts, Notification, SearchUser, ButtonCheckbox, Button RadioGroup, Breadcrumb [`159bff7`](https://github.com/gradido/gradido/commit/159bff71df20a5c48f93389b2f990f7fe54e53b9)
|
||||
- fix bug, update dockerfiles to use dependencies without grpc [`dedcebd`](https://github.com/gradido/gradido/commit/dedcebdb95ee0f3dfd2ad62074d4181af38476a2)
|
||||
- add warning to able to forward warnings from community server to client [`2fc3fe9`](https://github.com/gradido/gradido/commit/2fc3fe94a09bae199bf2f34f9df90e8fc3879c2b)
|
||||
|
||||
#### [1.0.2](https://github.com/gradido/gradido/compare/1.0.1...1.0.2)
|
||||
|
||||
> 27 May 2021
|
||||
|
||||
- feat: Test Transaction List [`#470`](https://github.com/gradido/gradido/pull/470)
|
||||
- fixed problem with finding cpsp parse binary under windows with conan [`#471`](https://github.com/gradido/gradido/pull/471)
|
||||
- fix: GDD Amount is Always Displayed with Two Digits [`#468`](https://github.com/gradido/gradido/pull/468)
|
||||
- fix: Date Time Formats [`#469`](https://github.com/gradido/gradido/pull/469)
|
||||
- Community ipv6 localhost [`#466`](https://github.com/gradido/gradido/pull/466)
|
||||
|
||||
@ -151,7 +151,7 @@ class AppController extends Controller
|
||||
if($last_migration) {
|
||||
$current_db_version = $last_migration->db_version;
|
||||
}
|
||||
$php_data_version = 2;
|
||||
$php_data_version = 3;
|
||||
if($current_db_version < $php_data_version) {
|
||||
$this->redirect(['controller' => 'Migrations', 'action' => 'migrate', 'html' => $html, 'db_version' => $current_db_version]);
|
||||
}
|
||||
@ -289,7 +289,7 @@ class AppController extends Controller
|
||||
}
|
||||
} else {
|
||||
if(!$redirect) {
|
||||
return ['state' => 'not found', 'msg' => 'invalid session'];
|
||||
return ['state' => 'not found', 'msg' => 'invalid session', 'details' => $json];
|
||||
}
|
||||
if ($json['state'] === 'not found') {
|
||||
$this->Flash->error(__('invalid session'));
|
||||
|
||||
@ -69,6 +69,14 @@ class MigrationsController extends AppController
|
||||
[$stateBalancesTable, 'updateAllBalances']
|
||||
];
|
||||
$new_db_version = 2;
|
||||
} else if($current_db_version == 2) {
|
||||
$commands = [
|
||||
[$stateUserTransactionsTable, 'truncate'],
|
||||
[$stateBalancesTable, 'truncate'],
|
||||
[$transactionsTable, 'fillStateUserTransactions'],
|
||||
[$stateBalancesTable, 'updateAllBalances']
|
||||
];
|
||||
$new_db_version = 3;
|
||||
}
|
||||
|
||||
$migration_result = $this->callFunctions($commands);
|
||||
|
||||
@ -165,13 +165,22 @@ class TransactionsTable extends Table
|
||||
|
||||
foreach($stateUserTransactions as $i => $su_transaction)
|
||||
{
|
||||
/*echo "i: $i<br>";
|
||||
echo "state user transaction: <br>";
|
||||
var_dump($su_transaction);
|
||||
echo "<br>";*/
|
||||
//var_dump($su_transaction);
|
||||
//die("step");
|
||||
// add decay transactions
|
||||
|
||||
|
||||
// sender or receiver when user has sended money
|
||||
// group name if creation
|
||||
// type: gesendet / empfangen / geschöpft
|
||||
// transaktion nr / id
|
||||
// date
|
||||
// balance
|
||||
$transaction = $transaction_indiced[$su_transaction->transaction_id];
|
||||
|
||||
$final_transaction = [
|
||||
'transaction_id' => $transaction->id,
|
||||
'date' => $transaction->received,
|
||||
'memo' => $transaction->memo
|
||||
];
|
||||
|
||||
$prev = null;
|
||||
if($i > 0 ) {
|
||||
$prev = $stateUserTransactions[$i-1];
|
||||
@ -179,18 +188,15 @@ class TransactionsTable extends Table
|
||||
if($prev && $decay == true)
|
||||
{
|
||||
if($prev->balance > 0) {
|
||||
$current = $su_transaction;
|
||||
|
||||
$current = $su_transaction;
|
||||
$calculated_decay = $stateBalancesTable->calculateDecay($prev->balance, $prev->balance_date, $current->balance_date, true);
|
||||
$balance = floatval($prev->balance - $calculated_decay['balance']);
|
||||
|
||||
if($balance)
|
||||
if($balance > 100)
|
||||
{
|
||||
$final_transactions[] = [
|
||||
'type' => 'decay',
|
||||
$final_transactions['decay'] = [
|
||||
'balance' => $balance,
|
||||
'decay_duration' => $calculated_decay['interval']->format('%a days, %H hours, %I minutes, %S seconds'),
|
||||
'memo' => ''
|
||||
'decay_duration' => $calculated_decay['interval']->format('%a days, %H hours, %I minutes, %S seconds')
|
||||
];
|
||||
}
|
||||
}
|
||||
@ -208,52 +214,42 @@ class TransactionsTable extends Table
|
||||
$creation = $transaction->transaction_creation;
|
||||
$balance = $stateBalancesTable->calculateDecay($creation->amount, $creation->target_date, $transaction->received);
|
||||
|
||||
$final_transactions[] = [
|
||||
'name' => 'Gradido Akademie',
|
||||
'type' => 'creation',
|
||||
'transaction_id' => $transaction->id,
|
||||
'date' => $transaction->received,// $creation->target_date,
|
||||
'target_date' => $creation->target_date,
|
||||
'creation_amount' => $creation->amount,
|
||||
'balance' => $balance,
|
||||
'memo' => $transaction->memo
|
||||
];
|
||||
$final_transaction['name'] = 'Gradido Akademie';
|
||||
$final_transaction['type'] = 'creation';
|
||||
$final_transaction['target_date'] = $creation->target_date;
|
||||
$final_transaction['creation_amount'] = $creation->amount;
|
||||
$final_transaction['balance'] = $balance;
|
||||
|
||||
} else if($su_transaction->transaction_type_id == 2) { // transfer or send coins
|
||||
$sendCoins = $transaction->transaction_send_coin;
|
||||
$type = '';
|
||||
$otherUser = null;
|
||||
$final_transaction['balance'] = $sendCoins->amount;
|
||||
$other_user_public = '';
|
||||
if ($sendCoins->state_user_id == $user['id']) {
|
||||
$type = 'send';
|
||||
$final_transaction['type'] = 'send';
|
||||
|
||||
if(isset($involved_users[$sendCoins->receiver_user_id])) {
|
||||
$otherUser = $involved_users[$sendCoins->receiver_user_id];
|
||||
}
|
||||
$other_user_public = bin2hex(stream_get_contents($sendCoins->receiver_public_key));
|
||||
$final_transaction['pubkey'] = bin2hex(stream_get_contents($sendCoins->receiver_public_key));
|
||||
} else if ($sendCoins->receiver_user_id == $user['id']) {
|
||||
$type = 'receive';
|
||||
$final_transaction['type'] = 'receive';
|
||||
if(isset($involved_users[$sendCoins->state_user_id])) {
|
||||
$otherUser = $involved_users[$sendCoins->state_user_id];
|
||||
}
|
||||
if($sendCoins->sender_public_key) {
|
||||
$other_user_public = bin2hex(stream_get_contents($sendCoins->sender_public_key));
|
||||
$final_transaction['pubkey'] = bin2hex(stream_get_contents($sendCoins->sender_public_key));
|
||||
}
|
||||
}
|
||||
if(null == $otherUser) {
|
||||
$otherUser = $stateUsersTable->newEntity();
|
||||
}
|
||||
$final_transactions[] = [
|
||||
'name' => $otherUser->first_name . ' ' . $otherUser->last_name,
|
||||
'email' => $otherUser->email,
|
||||
'type' => $type,
|
||||
'transaction_id' => $sendCoins->transaction_id,
|
||||
'date' => $transaction->received,
|
||||
'balance' => $sendCoins->amount,
|
||||
'memo' => $transaction->memo,
|
||||
'pubkey' => $other_user_public
|
||||
];
|
||||
$final_transaction['name'] = $otherUser->first_name . ' ' . $otherUser->last_name;
|
||||
$final_transaction['email'] = $otherUser->email;
|
||||
}
|
||||
|
||||
|
||||
$final_transactions[] = $final_transaction;
|
||||
|
||||
if($i == $stateUserTransactionsCount-1 && $decay == true) {
|
||||
$calculated_decay = $stateBalancesTable->calculateDecay(
|
||||
$su_transaction->balance,
|
||||
@ -264,16 +260,13 @@ class TransactionsTable extends Table
|
||||
$duration = $decay_start_date->timeAgoInWords();
|
||||
}
|
||||
$balance = floatval($su_transaction->balance - $calculated_decay['balance']);
|
||||
|
||||
if($balance)
|
||||
{
|
||||
$final_transactions[] = [
|
||||
'type' => 'decay',
|
||||
'balance' => $balance,
|
||||
'decay_duration' => $duration,
|
||||
'last_decay' => true,
|
||||
'memo' => ''
|
||||
];
|
||||
if($balance > 100) {
|
||||
$final_transactions[] = [
|
||||
'type' => 'decay',
|
||||
'balance' => $balance,
|
||||
'decay_duration' => $duration,
|
||||
'memo' => ''
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -163,7 +163,8 @@ class TransactionCreation extends TransactionBase {
|
||||
$transactionCreationEntity->target_date = $this->protoTransactionCreation->getTargetDate()->getSeconds();
|
||||
$target_date = new FrozenTime($transactionCreationEntity->target_date);
|
||||
|
||||
$decayed_balance = $stateBalancesTable->calculateDecay($this->getAmount(), $target_date, $received);
|
||||
//$decayed_balance = $stateBalancesTable->calculateDecay($this->getAmount(), $target_date, $received);
|
||||
$balance = $this->getAmount();
|
||||
|
||||
if(!$this->transactionCreationsTable->save($transactionCreationEntity)) {
|
||||
$this->addError('TransactionCreation::save', 'error saving transactionCreation with errors: ' . json_encode($transactionCreationEntity->getErrors()));
|
||||
@ -171,13 +172,13 @@ class TransactionCreation extends TransactionBase {
|
||||
}
|
||||
|
||||
// update state balance
|
||||
$final_balance = $this->updateStateBalance($receiverUserId, $decayed_balance, $received);
|
||||
$final_balance = $this->updateStateBalance($receiverUserId, $balance, $received);
|
||||
if(false === $final_balance) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// decay is a virtual field which is calculated from amount and now() - record_date
|
||||
if(!$this->addStateUserTransaction($receiverUserId, $transaction_id, 1, $decayed_balance, $received)) {
|
||||
if(!$this->addStateUserTransaction($receiverUserId, $transaction_id, 1, $balance, $received)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@ -12,13 +12,16 @@ $body['gdtSum'] = $this->element('centToFloat', ['cent' => $body['gdtSum'], 'pre
|
||||
|
||||
foreach($body['transactions'] as $i => $transaction) {
|
||||
$useCeil = false;
|
||||
if(isset($transaction['last_decay']) && $transaction['last_decay']) {
|
||||
if($transaction['type'] == 'decay') {
|
||||
$useCeil = true;
|
||||
}
|
||||
$body['transactions'][$i]['balance'] = $this->element('centToFloat', ['cent' => $transaction['balance'], 'precision' => 4, 'useCeil' => $useCeil]);
|
||||
if(isset($transaction['creation_amount'])) {
|
||||
$body['transactions'][$i]['creation_amount'] = $this->element('centToFloat', ['cent' => $transaction['creation_amount'], 'precision' => 4]);
|
||||
}
|
||||
if(isset($transaction['decay'])) {
|
||||
$body['transactions'][$i]['decay']['balance'] = $this->element('centToFloat', ['cent' => $transaction['decay']['balance'], 'precision' => 4]);
|
||||
}
|
||||
}
|
||||
|
||||
?><?= json_encode($body) ?>
|
||||
@ -8,14 +8,19 @@
|
||||
$this->assign('title', __('Gradido Überweisung'));
|
||||
$receiverNames = $receiverUser->first_name . ' ' . $receiverUser->last_name;
|
||||
$senderNames = $senderUser->first_name . ' ' . $senderUser->last_name;
|
||||
$senderNamesEmail = $senderUser->getEmailWithName();
|
||||
?><?= __('Hallo') ?> <?= $receiverNames ?>,
|
||||
|
||||
<?= __('Du hast soeben {0} von {1} erhalten.', $this->element('printGradido', ['number' => $gdd_cent, 'raw' => true]), $senderNames) ?>
|
||||
<?= __('Du hast soeben {0} von {1} erhalten.', $this->element('printGradido', ['number' => $gdd_cent, 'raw' => true]), $senderNamesEmail) ?>
|
||||
<?= __('{0} schreibt:', $senderNames) ?>
|
||||
|
||||
<?= $memo ?>
|
||||
|
||||
<?= __('Bitte antworte nicht auf diese E-Mail!'); ?>
|
||||
<?= __('Wenn Du ') . $senderNames . __(' per E-Mail antworten willst, schreibe stattdessen an die Adresse: '); ?>
|
||||
|
||||
<?= $senderUser->email ?>
|
||||
|
||||
|
||||
<?= __('Mit freundlichen Grüßen'); ?>
|
||||
Gradido Community Server
|
||||
@ -37,7 +37,7 @@ class Migrations2Fixture extends TestFixture
|
||||
$this->records = [
|
||||
[
|
||||
'id' => 1,
|
||||
'db_version' => 2,
|
||||
'db_version' => 3,
|
||||
],
|
||||
];
|
||||
parent::init();
|
||||
|
||||
@ -111,7 +111,9 @@ class AppRequestControllerTest extends TestCase
|
||||
]);
|
||||
|
||||
$this->getAndParse('/api/get-balance/' . 1211,
|
||||
['state' => 'not found', 'msg' => 'invalid session']
|
||||
['state' => 'not found', 'msg' => 'invalid session',
|
||||
'details' => ['msg' => 'session not found', 'state' => 'not found']
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
@ -128,7 +130,9 @@ class AppRequestControllerTest extends TestCase
|
||||
]);
|
||||
|
||||
$this->getAndParse('/api/get-balance/' ,
|
||||
['state' => 'not found', 'msg' => 'invalid session']
|
||||
['state' => 'not found', 'msg' => 'invalid session',
|
||||
'details' => ['msg' => 'session not found', 'state' => 'not found']
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
@ -158,81 +162,81 @@ class AppRequestControllerTest extends TestCase
|
||||
"state": "success",
|
||||
"transactions": [
|
||||
{
|
||||
"name": "Gradido Akademie",
|
||||
"type": "creation",
|
||||
"transaction_id": 2,
|
||||
"date": "2021-04-12T00:00:00+00:00",
|
||||
"memo": "AGE Januar 2021",
|
||||
"name": "Gradido Akademie",
|
||||
"type": "creation",
|
||||
"target_date": "2021-01-01T00:00:00+00:00",
|
||||
"creation_amount": 10000000,
|
||||
"balance": 10000000,
|
||||
"memo": "AGE Januar 2021"
|
||||
"balance": 10000000
|
||||
},
|
||||
{
|
||||
"name": "Samuel Schmied",
|
||||
"email": "test3.yahoo.com",
|
||||
"type": "send",
|
||||
"transaction_id": 3,
|
||||
"date": "2021-04-12T00:00:00+00:00",
|
||||
"balance": 1000000,
|
||||
"memo": "test",
|
||||
"pubkey": "e3369de3623ce8446d0424c4013e7a1d71a2671ae3d7bf1e798ebf0665d145f2"
|
||||
"balance": 1000000,
|
||||
"type": "send",
|
||||
"pubkey": "e3369de3623ce8446d0424c4013e7a1d71a2671ae3d7bf1e798ebf0665d145f2",
|
||||
"name": "Samuel Schmied",
|
||||
"email": "test3.yahoo.com"
|
||||
},
|
||||
{
|
||||
"name": "Samuel Schmied",
|
||||
"email": "test3.yahoo.com",
|
||||
"type": "send",
|
||||
"transaction_id": 4,
|
||||
"date": "2021-04-14T00:00:00+00:00",
|
||||
"balance": 100000,
|
||||
"memo": "test time",
|
||||
"pubkey": "e3369de3623ce8446d0424c4013e7a1d71a2671ae3d7bf1e798ebf0665d145f2"
|
||||
"balance": 100000,
|
||||
"type": "send",
|
||||
"pubkey": "e3369de3623ce8446d0424c4013e7a1d71a2671ae3d7bf1e798ebf0665d145f2",
|
||||
"name": "Samuel Schmied",
|
||||
"email": "test3.yahoo.com"
|
||||
},
|
||||
{
|
||||
"name": "Samuel Schmied",
|
||||
"email": "test3.yahoo.com",
|
||||
"type": "send",
|
||||
"transaction_id": 5,
|
||||
"date": "2021-04-14T09:01:07+00:00",
|
||||
"balance": 100000,
|
||||
"memo": "test time",
|
||||
"pubkey": "e3369de3623ce8446d0424c4013e7a1d71a2671ae3d7bf1e798ebf0665d145f2"
|
||||
"balance": 100000,
|
||||
"type": "send",
|
||||
"pubkey": "e3369de3623ce8446d0424c4013e7a1d71a2671ae3d7bf1e798ebf0665d145f2",
|
||||
"name": "Samuel Schmied",
|
||||
"email": "test3.yahoo.com"
|
||||
},
|
||||
{
|
||||
"name": "Samuel Schmied",
|
||||
"email": "test3.yahoo.com",
|
||||
"type": "receive",
|
||||
"transaction_id": 6,
|
||||
"date": "2021-04-14T09:02:28+00:00",
|
||||
"balance": 100000,
|
||||
"memo": "test time 3",
|
||||
"pubkey": "0000000000000000000000000000000000000000000000000000000000000000"
|
||||
"balance": 100000,
|
||||
"type": "receive",
|
||||
"pubkey": "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"name": "Samuel Schmied",
|
||||
"email": "test3.yahoo.com"
|
||||
},
|
||||
{
|
||||
"name": "Samuel Schmied",
|
||||
"email": "test3.yahoo.com",
|
||||
"type": "receive",
|
||||
"transaction_id": 7,
|
||||
"date": "2021-04-14T09:28:46+00:00",
|
||||
"balance": 100000,
|
||||
"memo": "test login crash",
|
||||
"pubkey": "0000000000000000000000000000000000000000000000000000000000000000"
|
||||
"balance": 100000,
|
||||
"type": "receive",
|
||||
"pubkey": "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"name": "Samuel Schmied",
|
||||
"email": "test3.yahoo.com"
|
||||
},
|
||||
{
|
||||
"name": "Samuel Schmied",
|
||||
"email": "test3.yahoo.com",
|
||||
"type": "receive",
|
||||
"transaction_id": 8,
|
||||
"date": "2021-04-14T09:31:28+00:00",
|
||||
"balance": 100000,
|
||||
"memo": "test login crash",
|
||||
"pubkey": "0000000000000000000000000000000000000000000000000000000000000000"
|
||||
"balance": 100000,
|
||||
"type": "receive",
|
||||
"pubkey": "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"name": "Samuel Schmied",
|
||||
"email": "test3.yahoo.com"
|
||||
}
|
||||
],
|
||||
"transactionExecutingCount": 0,
|
||||
"count": 7,
|
||||
"gdtSum": 180000,
|
||||
"timeUsed": 0.5575470924377441,
|
||||
"decay_date": "2021-05-28T09:35:02+00:00",
|
||||
"timeUsed": 0.7237420082092285,
|
||||
"decay_date": "2021-06-22T08:54:43+00:00",
|
||||
"balance": 9100000,
|
||||
"decay": 9100000
|
||||
}';
|
||||
|
||||
Binary file not shown.
@ -7,409 +7,505 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-28 10:50+0200\n"
|
||||
"PO-Revision-Date: 2020-05-28 10:54+0200\n"
|
||||
"POT-Creation-Date: 2021-06-21 13:37+0200\n"
|
||||
"PO-Revision-Date: 2021-06-21 13:38+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: de_DE\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.3.1\n"
|
||||
"X-Generator: Poedit 3.0\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:85
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:124
|
||||
#: build/http_pages/LoginPage.cpp:196 build/http_pages/LoginPage.cpp:275
|
||||
msgid "Login"
|
||||
msgstr "Anmeldung"
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:85
|
||||
#: build/http_pages/LoginPage.cpp:196
|
||||
msgid "E-Mail or password isn't right, please try again!"
|
||||
msgstr ""
|
||||
"E-Mail und Passwort Kombination stimmen nicht, bitte versuche es erneut. "
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:88
|
||||
#, fuzzy
|
||||
#| msgid "Password"
|
||||
#: build/http_pages/LoginPage.cpp:205
|
||||
msgid "Passwort"
|
||||
msgstr "Passwort"
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:88
|
||||
#: build/http_pages/LoginPage.cpp:205
|
||||
msgid ""
|
||||
"Passwort wird noch berechnet, bitte versuche es in etwa 1 Minute erneut."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:91
|
||||
msgid "Account"
|
||||
msgstr "Konto"
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:91
|
||||
msgid "E-Mail Address not checked, do you already get one?"
|
||||
#: build/http_pages/LoginPage.cpp:208 build/http_pages/LoginPage.cpp:211
|
||||
msgid "User"
|
||||
msgstr ""
|
||||
"E-Mail Adresse wurde noch nicht überprüft. Hast du schon in deine E-Mails "
|
||||
"geschaut? Bitte schau auch in dein Spam-Verzeichnis nach."
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:124
|
||||
#: build/http_pages/LoginPage.cpp:208
|
||||
msgid "Error in saved data, the server admin will look at it."
|
||||
msgstr ""
|
||||
|
||||
#: build/http_pages/LoginPage.cpp:211
|
||||
msgid "Benutzer ist deaktiviert, kein Login möglich!"
|
||||
msgstr ""
|
||||
|
||||
#: build/http_pages/LoginPage.cpp:275
|
||||
msgid "Username and password are needed!"
|
||||
msgstr "E-Mail und Passwort werden benötigt!"
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:175
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:50
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:54
|
||||
#: model/Session.cpp:163 model/Session.cpp:170 model/Session.cpp:209
|
||||
#: model/Session.cpp:234
|
||||
#: build/http_pages/LoginPage.cpp:376 src/cpp/model/Session.cpp:161
|
||||
#: src/cpp/model/Session.cpp:168 src/cpp/model/Session.cpp:220
|
||||
#: src/cpp/model/Session.cpp:231
|
||||
msgid "E-Mail"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:178
|
||||
#: build/http_pages/LoginPage.cpp:381
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:603
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:609
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:614
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:619
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:624
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:629
|
||||
msgid "Password"
|
||||
msgstr "Passwort"
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:180
|
||||
#: build/http_pages/LoginPage.cpp:384
|
||||
msgid " Login "
|
||||
msgstr "Anmeldung"
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:182
|
||||
#: build/http_pages/LoginPage.cpp:391
|
||||
msgid "You haven't any account yet? Please follow the link to create one."
|
||||
msgstr "Du hast noch kein Gradido-Konto?"
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:183
|
||||
#: build/http_pages/LoginPage.cpp:395
|
||||
msgid "Create New Account"
|
||||
msgstr "Neues Konto erstellen"
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:186
|
||||
#: build/http_pages/LoginPage.cpp:403
|
||||
msgid "Passwort vergessen"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:97
|
||||
msgid "Bitte gebe deinen E-Mail Verification Code ein:"
|
||||
#: build/http_pages/CheckEmailPage.cpp:155
|
||||
msgid "E-Mail verifizieren"
|
||||
msgstr "E-Mail überprüfen"
|
||||
|
||||
#: build/http_pages/CheckEmailPage.cpp:165
|
||||
msgid ""
|
||||
"Deine E-Mail wurde erfolgreich bestätigt. Du kannst nun Gradidos versenden."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:98
|
||||
#: model/Session.cpp:186
|
||||
#, fuzzy
|
||||
#| msgid "E-Mail Verification"
|
||||
#: build/http_pages/CheckEmailPage.cpp:170
|
||||
msgid "Zur Startseite"
|
||||
msgstr ""
|
||||
|
||||
#: build/http_pages/CheckEmailPage.cpp:175
|
||||
msgid "Bitte gib deinen E-Mail Verification Code ein:"
|
||||
msgstr "Bitte gib deinen E-Mail Verification Code ein:"
|
||||
|
||||
#: build/http_pages/CheckEmailPage.cpp:178 src/cpp/model/Session.cpp:184
|
||||
msgid "Email Verification Code"
|
||||
msgstr "E-Mail Überprüfung"
|
||||
msgstr "Email Verification Code"
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:100
|
||||
#: build/http_pages/CheckEmailPage.cpp:185
|
||||
msgid "Überprüfe Code"
|
||||
msgstr ""
|
||||
msgstr "Überprüfe Code"
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:104
|
||||
#: build/http_pages/CheckEmailPage.cpp:190
|
||||
msgid "Du hast bisher keinen Code erhalten?"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:105
|
||||
#: build/http_pages/CheckEmailPage.cpp:193
|
||||
msgid "E-Mail erneut zuschicken (in Arbeit)"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:108
|
||||
#: build/http_pages/CheckEmailPage.cpp:198
|
||||
msgid "Funktioniert dein E-Mail Verification Code nicht?"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:109
|
||||
#: build/http_pages/CheckEmailPage.cpp:201
|
||||
msgid "Schicke uns eine E-Mail und wir kümmern uns darum: "
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:110
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:133
|
||||
#: build/http_pages/CheckEmailPage.cpp:208
|
||||
#: build/http_pages/ResetPasswordPage.cpp:273
|
||||
msgid "E-Mail an Support schicken"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:50
|
||||
msgid "E-Mail Adresse konnte nicht gefunden werden oder ist nicht aktiviert."
|
||||
#: build/http_pages/ResetPasswordPage.cpp:174
|
||||
#: build/http_pages/ResetPasswordPage.cpp:217
|
||||
msgid "Gib bitte hier deine E-Mail Adresse an:"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:54
|
||||
msgid "E-Mail Adresse nicht angegeben."
|
||||
#: build/http_pages/ResetPasswordPage.cpp:183
|
||||
msgid "Bestätigen"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:59
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:74
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:26
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:94
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:114
|
||||
#: model/Session.cpp:495 model/Session.cpp:507 model/Session.cpp:515
|
||||
msgid "Passphrase"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:59
|
||||
msgid "Bitte wähle eine Option aus."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:74
|
||||
msgid "Ungültige Option"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:107
|
||||
msgid "Gebe bitte hier deine E-Mail Adresse an:"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:109
|
||||
#: build/http_pages/ResetPasswordPage.cpp:225
|
||||
msgid "Hast du dir deine Passphrase notiert oder gemerkt?"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:113
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:196
|
||||
#: build/http_pages/ResetPasswordPage.cpp:234
|
||||
#: build/http_pages/PassphrasePage.cpp:373
|
||||
msgid "Ja"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:118
|
||||
#: build/http_pages/ResetPasswordPage.cpp:241
|
||||
msgid "Nein"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:123
|
||||
#: build/http_pages/ResetPasswordPage.cpp:247
|
||||
msgid "Absenden"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:127
|
||||
#: build/http_pages/ResetPasswordPage.cpp:255
|
||||
msgid "Dir wird eine E-Mail zugeschickt um dein Passwort zurückzusetzen."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:129
|
||||
#: build/http_pages/ResetPasswordPage.cpp:260
|
||||
msgid "Der Admin hat eine E-Mail bekommen und wird sich bei dir melden."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:131
|
||||
#: build/http_pages/ResetPasswordPage.cpp:265
|
||||
msgid ""
|
||||
"Du hast bereits eine E-Mail bekommen. Bitte schau auch in dein Spam-"
|
||||
"Verzeichnis nach. "
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:132
|
||||
#: build/http_pages/ResetPasswordPage.cpp:268
|
||||
msgid ""
|
||||
"Du hast wirklich keine E-Mail erhalten und auch schon ein paar Minuten "
|
||||
"gewartet?"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:27
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:256
|
||||
#: build/http_pages/PassphrasePage.cpp:41
|
||||
#: build/http_pages/PassphrasePage.cpp:111
|
||||
#: build/http_pages/PassphrasePage.cpp:132 src/cpp/model/Session.cpp:465
|
||||
#: src/cpp/model/Session.cpp:477 src/cpp/model/Session.cpp:491
|
||||
msgid "Passphrase"
|
||||
msgstr ""
|
||||
|
||||
#: build/http_pages/PassphrasePage.cpp:42
|
||||
#: build/http_pages/PassphrasePage.cpp:451
|
||||
msgid "Neues Konto anlegen"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:28
|
||||
#: build/http_pages/PassphrasePage.cpp:43
|
||||
msgid "2/3"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:94
|
||||
#: build/http_pages/PassphrasePage.cpp:111
|
||||
msgid ""
|
||||
"Diese Passphrase ist ungültig, bitte überprüfen oder neu "
|
||||
"generieren (lassen)."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:114
|
||||
#: build/http_pages/PassphrasePage.cpp:132
|
||||
msgid "intern error please try again later"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:129
|
||||
#: build/http_pages/PassphrasePage.cpp:147
|
||||
msgid "3/3"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:132
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:135
|
||||
#: build/http_pages/PassphrasePage.cpp:150
|
||||
#: build/http_pages/PassphrasePage.cpp:153
|
||||
msgid "1/3"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:134
|
||||
#: build/http_pages/PassphrasePage.cpp:152
|
||||
msgid "Neues Passwort anlegen"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:153
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:188
|
||||
msgid "Was zu tun ist:"
|
||||
#: build/http_pages/PassphrasePage.cpp:270
|
||||
msgid "Passphrase abschreiben"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:154
|
||||
msgid ""
|
||||
"Schreibe dir deine Passphrase auf und packe sie gut weg. Du brauchst sie um "
|
||||
"deine Adresse wiederherzustellen. Wenn du sie verlierst, sind auch deine "
|
||||
"Gradidos verloren."
|
||||
msgstr ""
|
||||
"Schreibe dir deine Passphrase auf oder drucke sie aus und bewahre sie <b>in "
|
||||
"Papier-Form</b> an einem sicheren Ort auf (speichere sie nicht auf deinem "
|
||||
"Rechner oder Mobilgerät)! Du brauchst deine Passphrase um dein Konto "
|
||||
"wiederherzustellen, wenn du mal dein Passort vergessen haben solltest. "
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:157
|
||||
msgid "Deine Passphrase (Groß/Kleinschreibung beachten)"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:161
|
||||
#: build/http_pages/PassphrasePage.cpp:287
|
||||
msgid "Was ist eine Passphrase?"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:162
|
||||
msgid ""
|
||||
"Die Passphrase kommt aus dem Crypto-Bereich und ist ein Weg einen "
|
||||
"komplizierte kryptografischen Schlüssel in einer lesbaren Form darzustellen."
|
||||
#: build/http_pages/PassphrasePage.cpp:290
|
||||
msgid "Deine Passphrase besteht aus den im grünen Feld angezeigten Wörtern."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:163
|
||||
msgid ""
|
||||
"Der neue Gradido basiert technisch auf einer Kryptowährung (wie z.B. "
|
||||
"Bitcoin) um maximale Sicherheit zu erreichen."
|
||||
#: build/http_pages/PassphrasePage.cpp:293
|
||||
msgid "Sie dient deiner Sicherheit."
|
||||
msgstr ""
|
||||
"Der neue Gradido basiert technisch auf einer Kryptowährung (wie z.B. "
|
||||
"Bitcoin) um für dich die maximale Sicherheit zu gewährleisten."
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:165
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:275
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:280
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:293
|
||||
#: build/http_pages/PassphrasePage.cpp:296
|
||||
msgid ""
|
||||
"Du brauchst deine Passphrase um dein Konto wiederherzustellen, wenn du mal "
|
||||
"dein Passwort vergessen haben solltest."
|
||||
msgstr ""
|
||||
|
||||
#: build/http_pages/PassphrasePage.cpp:300
|
||||
msgid "Deine Passphrase (Groß/Kleinschreibung beachten)"
|
||||
msgstr ""
|
||||
|
||||
#: build/http_pages/PassphrasePage.cpp:309
|
||||
#: build/http_pages/PassphrasePage.cpp:352
|
||||
msgid "Was zu tun ist:"
|
||||
msgstr ""
|
||||
|
||||
#: build/http_pages/PassphrasePage.cpp:312
|
||||
msgid ""
|
||||
"Schreibe dir die obenstehende Passphrase <b>von Hand</b> auf ein Blatt "
|
||||
"Papier!"
|
||||
msgstr ""
|
||||
|
||||
#: build/http_pages/PassphrasePage.cpp:315
|
||||
msgid "Speichere sie auf keinen Fall auf deinem Rechner oder Mobilgerät!!"
|
||||
msgstr ""
|
||||
|
||||
#: build/http_pages/PassphrasePage.cpp:318
|
||||
msgid "Bewahre sie an einem sicheren Ort auf!"
|
||||
msgstr ""
|
||||
|
||||
#: build/http_pages/PassphrasePage.cpp:322
|
||||
#: build/http_pages/PassphrasePage.cpp:478
|
||||
#: build/http_pages/PassphrasePage.cpp:487
|
||||
#: build/http_pages/PassphrasePage.cpp:511
|
||||
msgid "Weiter"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:189
|
||||
#: build/http_pages/PassphrasePage.cpp:355
|
||||
msgid "Hast du dir deine Passphrase gemerkt?"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:190
|
||||
#: build/http_pages/PassphrasePage.cpp:358
|
||||
msgid ""
|
||||
"Dann zeig es mir. Zur Unterstützung gebe ich dir deine Wörter aber in "
|
||||
"anderer Reihenfolge."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:191
|
||||
#: build/http_pages/PassphrasePage.cpp:361
|
||||
msgid "Klicke sie an um sie einzusetzen."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:195
|
||||
#: build/http_pages/PassphrasePage.cpp:364
|
||||
msgid "Überprüfe dabei, ob du alle Wörter richtig geschrieben hast!"
|
||||
msgstr ""
|
||||
|
||||
#: build/http_pages/PassphrasePage.cpp:370
|
||||
msgid ""
|
||||
"Weil du kein Javascript verwendest geht es direkt weiter. Hast du dir deine "
|
||||
"Passphrase gemerkt oder aufgeschrieben?"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:242
|
||||
#: build/http_pages/PassphrasePage.cpp:429
|
||||
msgid "Deine E-Mail Adresse wurde erfolgreich bestätigt."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:246
|
||||
#: build/http_pages/PassphrasePage.cpp:437
|
||||
msgid "Neue Gradido Adresse anlegen / wiederherstellen"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:247
|
||||
#: build/http_pages/PassphrasePage.cpp:440
|
||||
msgid ""
|
||||
"Möchtest du ein neues Gradido-Konto anlegen oder ein bestehendes "
|
||||
"wiederherstellen?"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:263
|
||||
#: build/http_pages/PassphrasePage.cpp:460
|
||||
msgid "Bestehendes Konto wiederherstellen"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:270
|
||||
#: build/http_pages/PassphrasePage.cpp:469
|
||||
msgid ""
|
||||
"Falls du ein bestehendes Konto wiederherstellen willst, gib hier deine "
|
||||
"Passphrase ein:"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:288
|
||||
#: build/http_pages/PassphrasePage.cpp:497
|
||||
msgid "Konto wiederherstellen / Neues Passwort anlegen"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:289
|
||||
#: build/http_pages/PassphrasePage.cpp:501
|
||||
msgid ""
|
||||
"Um dein Konto wiederherzustellen, dir ein Neues Passwort auswählen zu "
|
||||
"Um dein Konto wiederherzustellen und dir ein Neues Passwort auswählen zu "
|
||||
"können, tippe hier bitte die Wörter deiner Passphrase in der richtigen "
|
||||
"Reihenfolge ein, welche du dir aufgeschrieben hast."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:303
|
||||
#: build/http_pages/PassphrasePage.cpp:524
|
||||
msgid "Fehler"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:304
|
||||
#: build/http_pages/PassphrasePage.cpp:527
|
||||
msgid ""
|
||||
"Ungültige Seite, wenn du das siehst stimmt hier etwas nicht. Bitte wende "
|
||||
"dich an den Server-Admin."
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:149 model/Session.cpp:180 model/Session.cpp:700
|
||||
#: model/Session.cpp:706 model/Session.cpp:1005
|
||||
#: src/cpp/model/Session.cpp:147 src/cpp/model/Session.cpp:177
|
||||
#: src/cpp/model/Session.cpp:645 src/cpp/model/Session.cpp:651
|
||||
#: src/cpp/model/Session.cpp:937 src/cpp/model/Session.cpp:953
|
||||
msgid "Benutzer"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:149
|
||||
#: src/cpp/model/Session.cpp:147
|
||||
msgid "Eingeloggter Benutzer ist kein Admin"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:155 model/Session.cpp:201
|
||||
#: src/cpp/model/Session.cpp:153 src/cpp/model/Session.cpp:212
|
||||
msgid "Vorname"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:155 model/Session.cpp:159 model/Session.cpp:201
|
||||
#: model/Session.cpp:205
|
||||
#: src/cpp/model/Session.cpp:153 src/cpp/model/Session.cpp:157
|
||||
#: src/cpp/model/Session.cpp:212 src/cpp/model/Session.cpp:216
|
||||
msgid ""
|
||||
"Bitte gebe einen Namen an. Mindestens 3 Zeichen, keines folgender Zeichen "
|
||||
"<>&;"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:159 model/Session.cpp:205
|
||||
#: src/cpp/model/Session.cpp:157 src/cpp/model/Session.cpp:216
|
||||
msgid "Nachname"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:163 model/Session.cpp:209
|
||||
#: src/cpp/model/Session.cpp:161 src/cpp/model/Session.cpp:220
|
||||
msgid "Bitte gebe eine gültige E-Mail Adresse an."
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:170 model/Session.cpp:234
|
||||
#: src/cpp/model/Session.cpp:168
|
||||
msgid "Für diese E-Mail Adresse gibt es bereits einen Account"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:180 model/Session.cpp:186
|
||||
#: src/cpp/model/Session.cpp:177 src/cpp/model/Session.cpp:184
|
||||
msgid "Fehler beim speichern!"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:379 model/Session.cpp:438 model/Session.cpp:881
|
||||
#: model/Session.cpp:889
|
||||
#: src/cpp/model/Session.cpp:231
|
||||
msgid "Für diese E-Mail Adresse gibt es bereits ein Konto"
|
||||
msgstr ""
|
||||
|
||||
#: src/cpp/model/Session.cpp:255
|
||||
msgid "Server"
|
||||
msgstr ""
|
||||
|
||||
#: src/cpp/model/Session.cpp:255
|
||||
msgid "Fehler beim speichen des Kontos bitte versuche es später noch einmal"
|
||||
msgstr ""
|
||||
|
||||
#: src/cpp/model/Session.cpp:350 src/cpp/model/Session.cpp:390
|
||||
#: src/cpp/model/Session.cpp:832 src/cpp/model/Session.cpp:841
|
||||
msgid "E-Mail Verification"
|
||||
msgstr "E-Mail Überprüfung"
|
||||
|
||||
#: model/Session.cpp:379
|
||||
#: src/cpp/model/Session.cpp:350
|
||||
msgid "Du hast dein Konto bereits aktiviert!"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:438
|
||||
#: src/cpp/model/Session.cpp:390
|
||||
msgid "Falscher Code für aktiven Login"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:495
|
||||
#: src/cpp/model/Session.cpp:465
|
||||
msgid "Deine Passphrase ist ungütig"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:507
|
||||
#: src/cpp/model/Session.cpp:477
|
||||
msgid "Ein Fehler trat auf, bitte versuche es erneut"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:515
|
||||
#: src/cpp/model/Session.cpp:491
|
||||
msgid "Das ist nicht die richtige Passphrase."
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:700
|
||||
#: src/cpp/model/Session.cpp:645
|
||||
msgid "Konnte Community Server nicht erreichen. E-Mail an den Admin ist raus."
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:706
|
||||
#: src/cpp/model/Session.cpp:651
|
||||
msgid ""
|
||||
"Fehler beim Löschen des Accounts. Bitte logge dich erneut ein und "
|
||||
"versuche es nochmal."
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:881
|
||||
#: src/cpp/model/Session.cpp:832
|
||||
msgid "Konnte kein passendes Konto finden."
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:889
|
||||
#: src/cpp/model/Session.cpp:841
|
||||
msgid "Fehler beim laden des Benutzers."
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:1005
|
||||
#: src/cpp/model/Session.cpp:937
|
||||
msgid "Kein gültiger Benutzer, bitte logge dich erneut ein."
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Gradido: E-Mail Verification"
|
||||
#~ msgstr "Gradido: E-Mail Überprüfung"
|
||||
#: src/cpp/model/Session.cpp:953
|
||||
msgid "Fehler beim generieren der Passphrase, der Admin bekommt eine E-Mail. "
|
||||
msgstr ""
|
||||
|
||||
#: src/cpp/model/email/Email.cpp:174
|
||||
msgid "Default Email Subject"
|
||||
msgstr ""
|
||||
|
||||
#: src/cpp/model/email/Email.cpp:180
|
||||
msgid "Error from Gradido Login Server"
|
||||
msgstr "Fehler auf dem Gradido Login Server"
|
||||
|
||||
#: src/cpp/model/email/Email.cpp:200
|
||||
msgid "Gradido: E-Mail Verification"
|
||||
msgstr "Gradido: E-Mail Überprüfung"
|
||||
|
||||
#: src/cpp/model/email/Email.cpp:246
|
||||
msgid "Gradido: Reset Password"
|
||||
msgstr "Gradido: Passwort zurücksetzen"
|
||||
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:604
|
||||
msgid ""
|
||||
"Please enter a valid password with at least 8 characters, upper and lower "
|
||||
"case letters, at least one number and one special character (@$!%*?&+-_)!"
|
||||
msgstr ""
|
||||
"Bitte gebe ein gültiges Password ein mit mindestens 8 Zeichen, Groß- und "
|
||||
"Kleinbuchstaben, mindestens einer Zahl und einem Sonderzeichen (@$!%*?&+-_) "
|
||||
"ein!"
|
||||
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:610
|
||||
msgid "Your password is to short!"
|
||||
msgstr "Dein Passwort ist zu kurz!"
|
||||
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:615
|
||||
msgid "Your password does not contain lowercase letters!"
|
||||
msgstr "Dein Passwort enthält keine Kleinbuchstaben!"
|
||||
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:620
|
||||
msgid "Your password does not contain any capital letters!"
|
||||
msgstr " Dein Passwort enthält keine Großbuchstaben!"
|
||||
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:625
|
||||
msgid "Your password does not contain any number!"
|
||||
msgstr "Dein Passwort enthält keine Zahlen!"
|
||||
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:630
|
||||
msgid "Your password does not contain special characters (@$!%*?&+-)!"
|
||||
msgstr "Dein Passwort enthält keine Sonderzeichen (@$!%*?&+-)!"
|
||||
|
||||
#~ msgid "Account"
|
||||
#~ msgstr "Konto"
|
||||
|
||||
#~ msgid "E-Mail Address not checked, do you already get one?"
|
||||
#~ msgstr ""
|
||||
#~ "E-Mail Adresse wurde noch nicht überprüft. Hast du schon in deine E-Mails "
|
||||
#~ "geschaut? Bitte schau auch in dein Spam-Verzeichnis nach."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Schreibe dir deine Passphrase auf und packe sie gut weg. Du brauchst sie "
|
||||
#~ "um deine Adresse wiederherzustellen. Wenn du sie verlierst, sind auch "
|
||||
#~ "deine Gradidos verloren."
|
||||
#~ msgstr ""
|
||||
#~ "Schreibe dir deine Passphrase auf oder drucke sie aus und bewahre sie "
|
||||
#~ "<b>in Papier-Form</b> an einem sicheren Ort auf (speichere sie nicht auf "
|
||||
#~ "deinem Rechner oder Mobilgerät)! Du brauchst deine Passphrase um dein "
|
||||
#~ "Konto wiederherzustellen, wenn du mal dein Passort vergessen haben "
|
||||
#~ "solltest. "
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Der neue Gradido basiert technisch auf einer Kryptowährung (wie z.B. "
|
||||
#~ "Bitcoin) um maximale Sicherheit zu erreichen."
|
||||
#~ msgstr ""
|
||||
#~ "Der neue Gradido basiert technisch auf einer Kryptowährung (wie z.B. "
|
||||
#~ "Bitcoin) um für dich die maximale Sicherheit zu gewährleisten."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Der Code stimmt nicht, bitte überprüfe ihn nochmal oder "
|
||||
|
||||
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-02-10 13:01+0100\n"
|
||||
"POT-Creation-Date: 2021-06-21 13:37+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -17,415 +17,461 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp:108
|
||||
#: F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp:156
|
||||
#: build/http_pages/LoginPage.cpp:196 build/http_pages/LoginPage.cpp:275
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp:108
|
||||
#: build/http_pages/LoginPage.cpp:196
|
||||
msgid "E-Mail or password isn't right, please try again!"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp:116
|
||||
#: build/http_pages/LoginPage.cpp:205
|
||||
msgid "Passwort"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp:116
|
||||
#: build/http_pages/LoginPage.cpp:205
|
||||
msgid ""
|
||||
"Passwort wird noch berechnet, bitte versuche es in etwa 1 Minute erneut."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp:119
|
||||
#: F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp:122
|
||||
#: build/http_pages/LoginPage.cpp:208 build/http_pages/LoginPage.cpp:211
|
||||
msgid "User"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp:119
|
||||
#: build/http_pages/LoginPage.cpp:208
|
||||
msgid "Error in saved data, the server admin will look at it."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp:122
|
||||
#: build/http_pages/LoginPage.cpp:211
|
||||
msgid "Benutzer ist deaktiviert, kein Login möglich!"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp:156
|
||||
#: build/http_pages/LoginPage.cpp:275
|
||||
msgid "Username and password are needed!"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp:178
|
||||
#: model/Session.cpp:210 model/Session.cpp:217 model/Session.cpp:259
|
||||
#: model/Session.cpp:284 model/Session.cpp:383 model/Session.cpp:393
|
||||
#: build/http_pages/LoginPage.cpp:376 src/cpp/model/Session.cpp:161
|
||||
#: src/cpp/model/Session.cpp:168 src/cpp/model/Session.cpp:220
|
||||
#: src/cpp/model/Session.cpp:231
|
||||
msgid "E-Mail"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp:179
|
||||
#: build/http_pages/LoginPage.cpp:381
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:603
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:609
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:614
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:619
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:624
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:629
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp:180
|
||||
#: build/http_pages/LoginPage.cpp:384
|
||||
msgid " Login "
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp:185
|
||||
#: build/http_pages/LoginPage.cpp:391
|
||||
msgid "You haven't any account yet? Please follow the link to create one."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp:187
|
||||
#: build/http_pages/LoginPage.cpp:395
|
||||
msgid "Create New Account"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server_production\\src\\cpsp\\login.cpsp:191
|
||||
#: build/http_pages/LoginPage.cpp:403
|
||||
msgid "Passwort vergessen"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:72
|
||||
#: build/http_pages/CheckEmailPage.cpp:155
|
||||
msgid "E-Mail verifizieren"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:77
|
||||
#: build/http_pages/CheckEmailPage.cpp:165
|
||||
msgid ""
|
||||
"Deine E-Mail wurde erfolgreich bestätigt. Du kannst nun Gradidos versenden."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:78
|
||||
#: build/http_pages/CheckEmailPage.cpp:170
|
||||
msgid "Zur Startseite"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:80
|
||||
#: build/http_pages/CheckEmailPage.cpp:175
|
||||
msgid "Bitte gib deinen E-Mail Verification Code ein:"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:81
|
||||
#: model/Session.cpp:233
|
||||
#: build/http_pages/CheckEmailPage.cpp:178 src/cpp/model/Session.cpp:184
|
||||
msgid "Email Verification Code"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:82
|
||||
#: build/http_pages/CheckEmailPage.cpp:185
|
||||
msgid "Überprüfe Code"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:85
|
||||
#: build/http_pages/CheckEmailPage.cpp:190
|
||||
msgid "Du hast bisher keinen Code erhalten?"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:86
|
||||
#: build/http_pages/CheckEmailPage.cpp:193
|
||||
msgid "E-Mail erneut zuschicken (in Arbeit)"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:89
|
||||
#: build/http_pages/CheckEmailPage.cpp:198
|
||||
msgid "Funktioniert dein E-Mail Verification Code nicht?"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:90
|
||||
#: build/http_pages/CheckEmailPage.cpp:201
|
||||
msgid "Schicke uns eine E-Mail und wir kümmern uns darum: "
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:91
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:151
|
||||
#: build/http_pages/CheckEmailPage.cpp:208
|
||||
#: build/http_pages/ResetPasswordPage.cpp:273
|
||||
msgid "E-Mail an Support schicken"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:113
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:124
|
||||
#: build/http_pages/ResetPasswordPage.cpp:174
|
||||
#: build/http_pages/ResetPasswordPage.cpp:217
|
||||
msgid "Gib bitte hier deine E-Mail Adresse an:"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:116
|
||||
#: build/http_pages/ResetPasswordPage.cpp:183
|
||||
msgid "Bestätigen"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:126
|
||||
#: build/http_pages/ResetPasswordPage.cpp:225
|
||||
msgid "Hast du dir deine Passphrase notiert oder gemerkt?"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:131
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:203
|
||||
#: build/http_pages/ResetPasswordPage.cpp:234
|
||||
#: build/http_pages/PassphrasePage.cpp:373
|
||||
msgid "Ja"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:136
|
||||
#: build/http_pages/ResetPasswordPage.cpp:241
|
||||
msgid "Nein"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:140
|
||||
#: build/http_pages/ResetPasswordPage.cpp:247
|
||||
msgid "Absenden"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:145
|
||||
#: build/http_pages/ResetPasswordPage.cpp:255
|
||||
msgid "Dir wird eine E-Mail zugeschickt um dein Passwort zurückzusetzen."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:147
|
||||
#: build/http_pages/ResetPasswordPage.cpp:260
|
||||
msgid "Der Admin hat eine E-Mail bekommen und wird sich bei dir melden."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:149
|
||||
#: build/http_pages/ResetPasswordPage.cpp:265
|
||||
msgid ""
|
||||
"Du hast bereits eine E-Mail bekommen. Bitte schau auch in dein Spam-"
|
||||
"Verzeichnis nach. "
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\resetPassword.cpsp:150
|
||||
#: build/http_pages/ResetPasswordPage.cpp:268
|
||||
msgid ""
|
||||
"Du hast wirklich keine E-Mail erhalten und auch schon ein paar Minuten "
|
||||
"gewartet?"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:26
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:94
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:114
|
||||
#: model/Session.cpp:638 model/Session.cpp:650 model/Session.cpp:658
|
||||
#: build/http_pages/PassphrasePage.cpp:41
|
||||
#: build/http_pages/PassphrasePage.cpp:111
|
||||
#: build/http_pages/PassphrasePage.cpp:132 src/cpp/model/Session.cpp:465
|
||||
#: src/cpp/model/Session.cpp:477 src/cpp/model/Session.cpp:491
|
||||
msgid "Passphrase"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:27
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:263
|
||||
#: build/http_pages/PassphrasePage.cpp:42
|
||||
#: build/http_pages/PassphrasePage.cpp:451
|
||||
msgid "Neues Konto anlegen"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:28
|
||||
#: build/http_pages/PassphrasePage.cpp:43
|
||||
msgid "2/3"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:94
|
||||
#: build/http_pages/PassphrasePage.cpp:111
|
||||
msgid ""
|
||||
"Diese Passphrase ist ungültig, bitte überprüfen oder neu "
|
||||
"generieren (lassen)."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:114
|
||||
#: build/http_pages/PassphrasePage.cpp:132
|
||||
msgid "intern error please try again later"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:129
|
||||
#: build/http_pages/PassphrasePage.cpp:147
|
||||
msgid "3/3"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:132
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:135
|
||||
#: build/http_pages/PassphrasePage.cpp:150
|
||||
#: build/http_pages/PassphrasePage.cpp:153
|
||||
msgid "1/3"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:134
|
||||
#: build/http_pages/PassphrasePage.cpp:152
|
||||
msgid "Neues Passwort anlegen"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:145
|
||||
#: build/http_pages/PassphrasePage.cpp:270
|
||||
msgid "Passphrase abschreiben"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:156
|
||||
#: build/http_pages/PassphrasePage.cpp:287
|
||||
msgid "Was ist eine Passphrase?"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:157
|
||||
#: build/http_pages/PassphrasePage.cpp:290
|
||||
msgid "Deine Passphrase besteht aus den im grünen Feld angezeigten Wörtern."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:158
|
||||
#: build/http_pages/PassphrasePage.cpp:293
|
||||
msgid "Sie dient deiner Sicherheit."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:159
|
||||
#: build/http_pages/PassphrasePage.cpp:296
|
||||
msgid ""
|
||||
"Du brauchst deine Passphrase um dein Konto wiederherzustellen, wenn du mal "
|
||||
"dein Passwort vergessen haben solltest."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:161
|
||||
#: build/http_pages/PassphrasePage.cpp:300
|
||||
msgid "Deine Passphrase (Groß/Kleinschreibung beachten)"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:166
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:194
|
||||
#: build/http_pages/PassphrasePage.cpp:309
|
||||
#: build/http_pages/PassphrasePage.cpp:352
|
||||
msgid "Was zu tun ist:"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:167
|
||||
#: build/http_pages/PassphrasePage.cpp:312
|
||||
msgid ""
|
||||
"Schreibe dir die obenstehende Passphrase <b>von Hand</b> auf ein Blatt "
|
||||
"Papier!"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:168
|
||||
#: build/http_pages/PassphrasePage.cpp:315
|
||||
msgid "Speichere sie auf keinen Fall auf deinem Rechner oder Mobilgerät!!"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:169
|
||||
#: build/http_pages/PassphrasePage.cpp:318
|
||||
msgid "Bewahre sie an einem sicheren Ort auf!"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:171
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:282
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:287
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:300
|
||||
#: build/http_pages/PassphrasePage.cpp:322
|
||||
#: build/http_pages/PassphrasePage.cpp:478
|
||||
#: build/http_pages/PassphrasePage.cpp:487
|
||||
#: build/http_pages/PassphrasePage.cpp:511
|
||||
msgid "Weiter"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:195
|
||||
#: build/http_pages/PassphrasePage.cpp:355
|
||||
msgid "Hast du dir deine Passphrase gemerkt?"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:196
|
||||
#: build/http_pages/PassphrasePage.cpp:358
|
||||
msgid ""
|
||||
"Dann zeig es mir. Zur Unterstützung gebe ich dir deine Wörter aber in "
|
||||
"anderer Reihenfolge."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:197
|
||||
#: build/http_pages/PassphrasePage.cpp:361
|
||||
msgid "Klicke sie an um sie einzusetzen."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:198
|
||||
#: build/http_pages/PassphrasePage.cpp:364
|
||||
msgid "Überprüfe dabei, ob du alle Wörter richtig geschrieben hast!"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:202
|
||||
#: build/http_pages/PassphrasePage.cpp:370
|
||||
msgid ""
|
||||
"Weil du kein Javascript verwendest geht es direkt weiter. Hast du dir deine "
|
||||
"Passphrase gemerkt oder aufgeschrieben?"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:249
|
||||
#: build/http_pages/PassphrasePage.cpp:429
|
||||
msgid "Deine E-Mail Adresse wurde erfolgreich bestätigt."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:253
|
||||
#: build/http_pages/PassphrasePage.cpp:437
|
||||
msgid "Neue Gradido Adresse anlegen / wiederherstellen"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:254
|
||||
#: build/http_pages/PassphrasePage.cpp:440
|
||||
msgid ""
|
||||
"Möchtest du ein neues Gradido-Konto anlegen oder ein bestehendes "
|
||||
"wiederherstellen?"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:270
|
||||
#: build/http_pages/PassphrasePage.cpp:460
|
||||
msgid "Bestehendes Konto wiederherstellen"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:277
|
||||
#: build/http_pages/PassphrasePage.cpp:469
|
||||
msgid ""
|
||||
"Falls du ein bestehendes Konto wiederherstellen willst, gib hier deine "
|
||||
"Passphrase ein:"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:294
|
||||
#: build/http_pages/PassphrasePage.cpp:497
|
||||
msgid "Konto wiederherstellen / Neues Passwort anlegen"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:296
|
||||
#: build/http_pages/PassphrasePage.cpp:501
|
||||
msgid ""
|
||||
"Um dein Konto wiederherzustellen und dir ein Neues Passwort auswählen zu "
|
||||
"können, tippe hier bitte die Wörter deiner Passphrase in der richtigen "
|
||||
"Reihenfolge ein, welche du dir aufgeschrieben hast."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:310
|
||||
#: build/http_pages/PassphrasePage.cpp:524
|
||||
msgid "Fehler"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:311
|
||||
#: build/http_pages/PassphrasePage.cpp:527
|
||||
msgid ""
|
||||
"Ungültige Seite, wenn du das siehst stimmt hier etwas nicht. Bitte wende "
|
||||
"dich an den Server-Admin."
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:196 model/Session.cpp:227 model/Session.cpp:935
|
||||
#: model/Session.cpp:941 model/Session.cpp:1226 model/Session.cpp:1242
|
||||
#: src/cpp/model/Session.cpp:147 src/cpp/model/Session.cpp:177
|
||||
#: src/cpp/model/Session.cpp:645 src/cpp/model/Session.cpp:651
|
||||
#: src/cpp/model/Session.cpp:937 src/cpp/model/Session.cpp:953
|
||||
msgid "Benutzer"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:196
|
||||
#: src/cpp/model/Session.cpp:147
|
||||
msgid "Eingeloggter Benutzer ist kein Admin"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:202 model/Session.cpp:251 model/Session.cpp:375
|
||||
#: src/cpp/model/Session.cpp:153 src/cpp/model/Session.cpp:212
|
||||
msgid "Vorname"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:202 model/Session.cpp:206 model/Session.cpp:251
|
||||
#: model/Session.cpp:255 model/Session.cpp:375 model/Session.cpp:379
|
||||
#: src/cpp/model/Session.cpp:153 src/cpp/model/Session.cpp:157
|
||||
#: src/cpp/model/Session.cpp:212 src/cpp/model/Session.cpp:216
|
||||
msgid ""
|
||||
"Bitte gebe einen Namen an. Mindestens 3 Zeichen, keines folgender Zeichen "
|
||||
"<>&;"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:206 model/Session.cpp:255 model/Session.cpp:379
|
||||
#: src/cpp/model/Session.cpp:157 src/cpp/model/Session.cpp:216
|
||||
msgid "Nachname"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:210 model/Session.cpp:259 model/Session.cpp:383
|
||||
#: src/cpp/model/Session.cpp:161 src/cpp/model/Session.cpp:220
|
||||
msgid "Bitte gebe eine gültige E-Mail Adresse an."
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:217 model/Session.cpp:284
|
||||
#: src/cpp/model/Session.cpp:168
|
||||
msgid "Für diese E-Mail Adresse gibt es bereits einen Account"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:227 model/Session.cpp:233
|
||||
#: src/cpp/model/Session.cpp:177 src/cpp/model/Session.cpp:184
|
||||
msgid "Fehler beim speichern!"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:393
|
||||
#: src/cpp/model/Session.cpp:231
|
||||
msgid "Für diese E-Mail Adresse gibt es bereits ein Konto"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:411
|
||||
#: src/cpp/model/Session.cpp:255
|
||||
msgid "Server"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:411
|
||||
#: src/cpp/model/Session.cpp:255
|
||||
msgid "Fehler beim speichen des Kontos bitte versuche es später noch einmal"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:505 model/Session.cpp:567 model/Session.cpp:1116
|
||||
#: model/Session.cpp:1125
|
||||
#: src/cpp/model/Session.cpp:350 src/cpp/model/Session.cpp:390
|
||||
#: src/cpp/model/Session.cpp:832 src/cpp/model/Session.cpp:841
|
||||
msgid "E-Mail Verification"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:505
|
||||
#: src/cpp/model/Session.cpp:350
|
||||
msgid "Du hast dein Konto bereits aktiviert!"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:567
|
||||
#: src/cpp/model/Session.cpp:390
|
||||
msgid "Falscher Code für aktiven Login"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:638
|
||||
#: src/cpp/model/Session.cpp:465
|
||||
msgid "Deine Passphrase ist ungütig"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:650
|
||||
#: src/cpp/model/Session.cpp:477
|
||||
msgid "Ein Fehler trat auf, bitte versuche es erneut"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:658
|
||||
#: src/cpp/model/Session.cpp:491
|
||||
msgid "Das ist nicht die richtige Passphrase."
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:935
|
||||
#: src/cpp/model/Session.cpp:645
|
||||
msgid "Konnte Community Server nicht erreichen. E-Mail an den Admin ist raus."
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:941
|
||||
#: src/cpp/model/Session.cpp:651
|
||||
msgid ""
|
||||
"Fehler beim Löschen des Accounts. Bitte logge dich erneut ein und "
|
||||
"versuche es nochmal."
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:1116
|
||||
#: src/cpp/model/Session.cpp:832
|
||||
msgid "Konnte kein passendes Konto finden."
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:1125
|
||||
#: src/cpp/model/Session.cpp:841
|
||||
msgid "Fehler beim laden des Benutzers."
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:1226
|
||||
#: src/cpp/model/Session.cpp:937
|
||||
msgid "Kein gültiger Benutzer, bitte logge dich erneut ein."
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:1242
|
||||
#: src/cpp/model/Session.cpp:953
|
||||
msgid "Fehler beim generieren der Passphrase, der Admin bekommt eine E-Mail. "
|
||||
msgstr ""
|
||||
|
||||
#: src/cpp/model/email/Email.cpp:174
|
||||
msgid "Default Email Subject"
|
||||
msgstr ""
|
||||
|
||||
#: src/cpp/model/email/Email.cpp:180
|
||||
msgid "Error from Gradido Login Server"
|
||||
msgstr ""
|
||||
|
||||
#: src/cpp/model/email/Email.cpp:200
|
||||
msgid "Gradido: E-Mail Verification"
|
||||
msgstr ""
|
||||
|
||||
#: src/cpp/model/email/Email.cpp:246
|
||||
msgid "Gradido: Reset Password"
|
||||
msgstr ""
|
||||
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:604
|
||||
msgid ""
|
||||
"Please enter a valid password with at least 8 characters, upper and lower "
|
||||
"case letters, at least one number and one special character (@$!%*?&+-_)!"
|
||||
msgstr ""
|
||||
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:610
|
||||
msgid "Your password is to short!"
|
||||
msgstr ""
|
||||
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:615
|
||||
msgid "Your password does not contain lowercase letters!"
|
||||
msgstr ""
|
||||
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:620
|
||||
msgid "Your password does not contain any capital letters!"
|
||||
msgstr ""
|
||||
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:625
|
||||
msgid "Your password does not contain any number!"
|
||||
msgstr ""
|
||||
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:630
|
||||
msgid "Your password does not contain special characters (@$!%*?&+-)!"
|
||||
msgstr ""
|
||||
|
||||
29
deployment/bare_metal/build_and_start_login_server.sh
Executable file
29
deployment/bare_metal/build_and_start_login_server.sh
Executable file
@ -0,0 +1,29 @@
|
||||
#!/bin/bash
|
||||
|
||||
# stop login_server running in screen
|
||||
screen -XS login quit
|
||||
|
||||
# rebuild login-server
|
||||
cd ../../login_server
|
||||
if [ ! -d "./build" ] ; then
|
||||
cd scripts
|
||||
./prepare_build.sh
|
||||
cd ..
|
||||
fi
|
||||
cd build
|
||||
cmake ..
|
||||
make -j$(nproc) Gradido_LoginServer
|
||||
|
||||
# rebuild locales
|
||||
cd ../scripts
|
||||
./compile_pot.sh
|
||||
cd ../src/LOCALE
|
||||
cp *.mo *.po /etc/grd_login/LOCALE/
|
||||
|
||||
cd ../../build/bin
|
||||
|
||||
# start login-server
|
||||
screen -dmS 'login_server' bash -c './Gradido_LoginServer'
|
||||
|
||||
|
||||
|
||||
17
deployment/bare_metal/build_frontend.sh
Executable file
17
deployment/bare_metal/build_frontend.sh
Executable file
@ -0,0 +1,17 @@
|
||||
#!/bin/bash
|
||||
# For that to work, node v12.19.0 needs to be installed with nvm for root
|
||||
# or NPM_BIN Path and NVM_DIR must be adjusted
|
||||
|
||||
cd /var/www/html/gradido/frontend
|
||||
|
||||
NPM_BIN=/root/.nvm/versions/node/v12.19.0/bin/npm
|
||||
|
||||
export NVM_DIR="/root/.nvm"
|
||||
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
|
||||
|
||||
$NPM_BIN install
|
||||
$NPM_BIN run build
|
||||
# prezip for faster deliver throw nginx
|
||||
cd dist
|
||||
find . -type f -name "*.css" -exec gzip -9 -k {} \;
|
||||
find . -type f -name "*.js" -exec gzip -9 -k {} \;
|
||||
73
deployment/bare_metal/nginx/sites-available/gradido
Normal file
73
deployment/bare_metal/nginx/sites-available/gradido
Normal file
@ -0,0 +1,73 @@
|
||||
server {
|
||||
server_name _;
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
|
||||
include /etc/nginx/common/protect.conf;
|
||||
include /etc/nginx/common/protect_add_header.conf;
|
||||
|
||||
root /var/www/html/gradido/community_server/webroot;
|
||||
index index.php;
|
||||
|
||||
gzip_static on;
|
||||
|
||||
|
||||
location ~ \.php$ {
|
||||
include snippets/fastcgi-php.conf;
|
||||
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
|
||||
}
|
||||
|
||||
location ~ /\.ht {
|
||||
deny all;
|
||||
}
|
||||
|
||||
location /vue {
|
||||
alias /var/www/html/gradido/frontend/dist;
|
||||
index index.html;
|
||||
|
||||
location ~* \.(png)$ {
|
||||
expires 39d;
|
||||
}
|
||||
try_files $uri $uri/ /index.html = 404;
|
||||
}
|
||||
|
||||
location /account {
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection 'upgrade';
|
||||
proxy_cache_bypass $http_upgrade;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_set_header Host $host;
|
||||
rewrite /account/(.*) /$1 break;
|
||||
|
||||
proxy_pass http://127.0.0.1:1200;
|
||||
proxy_redirect off;
|
||||
|
||||
|
||||
}
|
||||
|
||||
location /login_api {
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection 'upgrade';
|
||||
proxy_cache_bypass $http_upgrade;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_set_header Host $host;
|
||||
rewrite /login_api/(.*) /$1 break;
|
||||
|
||||
proxy_pass http://127.0.0.1:1201;
|
||||
proxy_redirect off;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.php?$args;
|
||||
}
|
||||
|
||||
access_log /var/log/nginx/access.log main;
|
||||
|
||||
}
|
||||
29
deployment/bare_metal/nginx/sites-available/gradido_updating
Normal file
29
deployment/bare_metal/nginx/sites-available/gradido_updating
Normal file
@ -0,0 +1,29 @@
|
||||
|
||||
server {
|
||||
server_name _;
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
|
||||
include /etc/nginx/common/protect.conf;
|
||||
include /etc/nginx/common/protect_add_header.conf;
|
||||
|
||||
root /var/www/html/;
|
||||
index updating.html;
|
||||
|
||||
location /account {
|
||||
alias /var/www/html/;
|
||||
index updating.html;
|
||||
}
|
||||
location /vue {
|
||||
alias /var/www/html/;
|
||||
index updating.html;
|
||||
}
|
||||
|
||||
location ~ /\.ht {
|
||||
deny all;
|
||||
}
|
||||
|
||||
access_log /var/log/nginx/access.log main;
|
||||
|
||||
}
|
||||
|
||||
1
deployment/bare_metal/nginx/updating_original.html
Normal file
1
deployment/bare_metal/nginx/updating_original.html
Normal file
@ -0,0 +1 @@
|
||||
Gradido Servers are updating..., please stand by and try again in some minutes
|
||||
53
deployment/bare_metal/update_all.sh
Executable file
53
deployment/bare_metal/update_all.sh
Executable file
@ -0,0 +1,53 @@
|
||||
#!/bin/bash
|
||||
|
||||
EMPTY_UPDATE_HTML=/var/www/html/updating_original.html
|
||||
UPDATE_HTML=/var/www/html/updating.html
|
||||
LOCK_FILE=/root/relay.lock
|
||||
PROJECT_PATH=/var/www/html/gradido
|
||||
SITE_CONFIG=stage1
|
||||
UPDATE_SITE_CONFIG=stage1_updating
|
||||
|
||||
# this script can be called for example from webhookrelay.com relay
|
||||
# to auto-deploy automatic after a update to the master branch
|
||||
|
||||
if [ -f $LOCK_FILE ] ; then
|
||||
retVal="Already building!"
|
||||
return "${retVal}" 2>/dev/null || exit "${retVal}"
|
||||
fi
|
||||
|
||||
touch $LOCK_FILE
|
||||
|
||||
# start with nearly empty html
|
||||
# needed a nearly empty html page in the folder
|
||||
cp $EMPTY_UPDATE_HTML $UPDATE_HTML
|
||||
|
||||
# let nginx showing a update page
|
||||
# needed nginx site-configs in nginx folders
|
||||
# gradido for running gradido servers
|
||||
# gradido_updating for showing upddate.html idealy for all pathes
|
||||
rm /etc/nginx/sites-enabled/$SITE_CONFIG
|
||||
ln -s /etc/nginx/sites-available/$UPDATE_SITE_CONFIG /etc/nginx/sites-enabled/
|
||||
service nginx restart
|
||||
|
||||
# stop login server
|
||||
screen -XS login quit
|
||||
echo 'starting with git pull<br>' >> $UPDATE_HTML
|
||||
cd $PROJECT_PATH
|
||||
# git checkout -f master
|
||||
git pull
|
||||
cd deployment/bare_metal
|
||||
echo 'update schemas' >> $UPDATE_HTML
|
||||
./update_db_schemas.sh
|
||||
echo 'starting with rebuilding login-server<br>' >> $UPDATE_HTML
|
||||
./build_and_start_login_server.sh
|
||||
echo 'starting with rebuilding frontend<br>' >> $UPDATE_HTML
|
||||
./build_frontend.sh
|
||||
|
||||
|
||||
# let nginx showing gradido
|
||||
rm /etc/nginx/sites-enabled/$UPDATE_SITE_CONFIG
|
||||
ln -s /etc/nginx/sites-available/$SITE_CONFIG /etc/nginx/sites-enabled/
|
||||
service nginx restart
|
||||
|
||||
rm $LOCK_FILE
|
||||
|
||||
9
deployment/bare_metal/update_db_schemas.sh
Executable file
9
deployment/bare_metal/update_db_schemas.sh
Executable file
@ -0,0 +1,9 @@
|
||||
#!/bin/bash
|
||||
# For that to work skeema needed to be installed on system
|
||||
# in login_server/skeema and community_server/db/skeema skeema configuration files need to be there also in the subfolders
|
||||
# Update DB Schemas (only the schemas, not the data)
|
||||
|
||||
cd ../../login_server/skeema
|
||||
skeema push --allow-unsafe
|
||||
cd ../../community_server/db/skeema
|
||||
skeema push --allow-unsafe
|
||||
@ -26,8 +26,7 @@ services:
|
||||
#########################################################
|
||||
login-server:
|
||||
build:
|
||||
target: login_server_alpine_debug
|
||||
dockerfile: Dockerfile.alpine-debug
|
||||
dockerfile: Dockerfiles/ubuntu/Dockerfile.debug
|
||||
security_opt:
|
||||
- seccomp:unconfined
|
||||
cap_add:
|
||||
@ -38,7 +37,7 @@ services:
|
||||
- ./login_server/dependencies:/code/dependencies
|
||||
- ./login_server/scripts:/code/scripts
|
||||
- ./configs/login_server:/etc/grd_login
|
||||
- login_build_3.1:/code/build
|
||||
- login_build_ubuntu_3.1:/code/build
|
||||
|
||||
|
||||
#########################################################
|
||||
@ -100,4 +99,4 @@ services:
|
||||
|
||||
volumes:
|
||||
frontend_node_modules:
|
||||
login_build_3.1:
|
||||
login_build_ubuntu_3.1:
|
||||
|
||||
@ -26,7 +26,7 @@ services:
|
||||
login-server:
|
||||
build:
|
||||
context: ./login_server/
|
||||
target: test
|
||||
dockerfile: Dockerfiles/ubuntu/Dockerfile.test
|
||||
security_opt:
|
||||
- seccomp:unconfined
|
||||
cap_add:
|
||||
|
||||
@ -55,7 +55,6 @@ services:
|
||||
login-server:
|
||||
build:
|
||||
context: ./login_server/
|
||||
target: login_server
|
||||
depends_on:
|
||||
- mariadb
|
||||
networks:
|
||||
|
||||
@ -505,6 +505,29 @@ The link can be modified in the Login-Server config:
|
||||
|
||||
For the docker build, you can find the config here: `configs/login_server/grd_login.properties`
|
||||
|
||||
### Request
|
||||
`POST http://localhost/login_api/resetPassword`
|
||||
|
||||
with:
|
||||
|
||||
```json
|
||||
{
|
||||
"session_id": 12452361,
|
||||
"password":"hasu/282?sjS"
|
||||
}
|
||||
```
|
||||
|
||||
### Response
|
||||
In case of success returns:
|
||||
|
||||
```json
|
||||
{
|
||||
"state":"success"
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
## Check Running Transactions / password encryption
|
||||
Check if transactions on login-server for user are processed
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "bootstrap-vue-gradido-wallet",
|
||||
"version": "1.0.2",
|
||||
"version": "1.1.1",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"start": "node run/server.js",
|
||||
|
||||
@ -102,19 +102,17 @@ const loginAPI = {
|
||||
const payload = {
|
||||
session_id: sessionId,
|
||||
email,
|
||||
update: {
|
||||
'User.password': password,
|
||||
},
|
||||
password,
|
||||
}
|
||||
return apiPost(CONFIG.LOGIN_API_URL + 'updateUserInfos', payload)
|
||||
return apiPost(CONFIG.LOGIN_API_URL + 'resetPassword', payload)
|
||||
},
|
||||
changePasswordProfile: async (sessionId, email, password, passwordNew) => {
|
||||
const payload = {
|
||||
session_id: sessionId,
|
||||
email,
|
||||
update: {
|
||||
'User.password': password,
|
||||
'User.passwordNew': passwordNew,
|
||||
'User.password_old': password,
|
||||
'User.password': passwordNew,
|
||||
},
|
||||
}
|
||||
return apiPost(CONFIG.LOGIN_API_URL + 'updateUserInfos', payload)
|
||||
|
||||
@ -38,6 +38,12 @@ const numberFormats = {
|
||||
minimumFractionDigits: 2,
|
||||
maximumFractionDigits: 2,
|
||||
},
|
||||
ungroupedDecimal: {
|
||||
style: 'decimal',
|
||||
minimumFractionDigits: 2,
|
||||
maximumFractionDigits: 2,
|
||||
useGrouping: false,
|
||||
},
|
||||
},
|
||||
de: {
|
||||
decimal: {
|
||||
@ -45,6 +51,12 @@ const numberFormats = {
|
||||
minimumFractionDigits: 2,
|
||||
maximumFractionDigits: 2,
|
||||
},
|
||||
ungroupedDecimal: {
|
||||
style: 'decimal',
|
||||
minimumFractionDigits: 2,
|
||||
maximumFractionDigits: 2,
|
||||
useGrouping: false,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@ -39,6 +39,7 @@
|
||||
"password_new":"neues Passwort",
|
||||
"password_new_repeat":"neues Passwort wiederholen",
|
||||
"change": "ändern",
|
||||
"change-password": "Passwort ändern",
|
||||
"amount":"Betrag",
|
||||
"memo":"Nachricht für den Empfänger",
|
||||
"message":"Nachricht",
|
||||
@ -65,7 +66,8 @@
|
||||
},
|
||||
"error": {
|
||||
"error":"Fehler",
|
||||
"no-account": "Leider konnten wir keinen Account finden mit diesen Daten!"
|
||||
"no-account": "Leider konnten wir keinen Account finden mit diesen Daten!",
|
||||
"change-password": "Fehler beim Ändern des Passworts"
|
||||
},
|
||||
"transaction":{
|
||||
"show_all":"Alle <strong>{count}</strong> Transaktionen ansehen",
|
||||
|
||||
@ -39,6 +39,7 @@
|
||||
"password_new":"New password",
|
||||
"password_new_repeat":"Repeat new password",
|
||||
"change": "change",
|
||||
"change-password": "Change password",
|
||||
"amount":"Amount",
|
||||
"memo":"Message for the recipient",
|
||||
"message":"Message",
|
||||
@ -65,7 +66,8 @@
|
||||
},
|
||||
"error": {
|
||||
"error":"Error",
|
||||
"no-account": "Unfortunately we could not find an account to the given data!"
|
||||
"no-account": "Unfortunately we could not find an account to the given data!",
|
||||
"change-password": "Error while changing password"
|
||||
},
|
||||
"transaction":{
|
||||
"show_all":"View all <strong>{count}</strong> transactions.",
|
||||
|
||||
@ -60,8 +60,8 @@ extend('gddSendAmount', {
|
||||
},
|
||||
params: ['min', 'max'],
|
||||
message: (_, values) => {
|
||||
values.min = i18n.n(values.min)
|
||||
values.max = i18n.n(values.max)
|
||||
values.min = i18n.n(values.min, 'ungroupedDecimal')
|
||||
values.max = i18n.n(values.max, 'ungroupedDecimal')
|
||||
return i18n.t('form.validation.gddSendAmount', values)
|
||||
},
|
||||
})
|
||||
|
||||
@ -144,9 +144,6 @@ export default {
|
||||
mounted() {
|
||||
this.initScrollbar()
|
||||
},
|
||||
created() {
|
||||
this.updateTransactions({ firstPage: 1, items: 5 })
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
|
||||
@ -45,7 +45,7 @@ describe('GddSend', () => {
|
||||
})
|
||||
|
||||
it('has a label form.receiver', () => {
|
||||
expect(wrapper.findAll('div.text-left').at(0).text()).toBe('form.receiver')
|
||||
expect(wrapper.find('label.input-1').text()).toBe('form.receiver')
|
||||
})
|
||||
|
||||
it('has a placeholder "E-Mail"', () => {
|
||||
@ -61,11 +61,11 @@ describe('GddSend', () => {
|
||||
})
|
||||
|
||||
it('has an GDD text icon', () => {
|
||||
expect(wrapper.find('#input-group-2').find('div.h3').text()).toBe('GDD')
|
||||
expect(wrapper.find('#input-group-2').find('div.m-1').text()).toBe('GDD')
|
||||
})
|
||||
|
||||
it('has a label form.amount', () => {
|
||||
expect(wrapper.findAll('div.text-left').at(1).text()).toBe('form.amount')
|
||||
expect(wrapper.find('label.input-2').text()).toBe('form.amount')
|
||||
})
|
||||
|
||||
it('has a placeholder "0.01"', () => {
|
||||
@ -87,7 +87,7 @@ describe('GddSend', () => {
|
||||
})
|
||||
|
||||
it('has a label form.memo', () => {
|
||||
expect(wrapper.findAll('div.text-left').at(2).text()).toBe('form.memo')
|
||||
expect(wrapper.find('label.input-3').text()).toBe('form.memo')
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<b-row class="transaction-form">
|
||||
<b-col xl="12" md="12">
|
||||
<b-card class="p-0 p-md-3" style="background-color: #ebebeba3 !important">
|
||||
<b-col xl="12" md="12" class="p-0">
|
||||
<b-card class="p-0 m-0" style="background-color: #ebebeba3 !important">
|
||||
<!-- -<QrCode @set-transaction="setTransaction"></QrCode> -->
|
||||
<validation-observer v-slot="{ handleSubmit }" ref="formValidator">
|
||||
<b-form role="form" @submit.prevent="handleSubmit(onSubmit)" @reset="onReset">
|
||||
@ -10,6 +10,7 @@
|
||||
</div>
|
||||
<br />
|
||||
-->
|
||||
|
||||
<div>
|
||||
<validation-provider
|
||||
name="Email"
|
||||
@ -21,33 +22,37 @@
|
||||
v-slot="{ errors }"
|
||||
>
|
||||
<b-row>
|
||||
<b-col class="text-left p-3 p-sm-1">{{ $t('form.receiver') }}</b-col>
|
||||
<b-col v-if="errors" class="text-right p-3 p-sm-1">
|
||||
<span v-for="error in errors" :key="error" class="errors">{{ error }}</span>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<label class="input-1" for="input-1">{{ $t('form.receiver') }}</label>
|
||||
<b-input-group
|
||||
id="input-group-1"
|
||||
label="Empfänger:"
|
||||
label-for="input-1"
|
||||
class="border border-default"
|
||||
description="We'll never share your email with anyone else."
|
||||
size="lg"
|
||||
class="mb-3"
|
||||
>
|
||||
<b-input-group-prepend class="p-3 d-none d-md-block">
|
||||
<b-icon icon="envelope" class="display-3"></b-icon>
|
||||
<b-input-group-prepend class="d-none d-md-block">
|
||||
<b-icon icon="envelope" class="display-4 m-3"></b-icon>
|
||||
</b-input-group-prepend>
|
||||
<b-form-input
|
||||
id="input-1"
|
||||
v-model="form.email"
|
||||
v-focus="emailFocused"
|
||||
@focus="emailFocused = true"
|
||||
@blur="normalizeEmail()"
|
||||
type="email"
|
||||
placeholder="E-Mail"
|
||||
style="font-size: xx-large; padding-left: 20px"
|
||||
style="font-size: large"
|
||||
class="pl-3"
|
||||
></b-form-input>
|
||||
</b-input-group>
|
||||
</validation-provider>
|
||||
</div>
|
||||
|
||||
<br />
|
||||
|
||||
<div>
|
||||
<validation-provider
|
||||
:name="$t('form.amount')"
|
||||
@ -58,33 +63,32 @@
|
||||
v-slot="{ errors, valid }"
|
||||
>
|
||||
<b-row>
|
||||
<b-col class="text-left p-3 p-sm-1">{{ $t('form.amount') }}</b-col>
|
||||
<b-col v-if="errors" class="text-right p-3 p-sm-1">
|
||||
<b-col v-if="errors" class="col-12 text-right p-3 p-sm-1">
|
||||
<span v-for="error in errors" class="errors" :key="error">{{ error }}</span>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-input-group
|
||||
id="input-group-2"
|
||||
label="Betrag:"
|
||||
label-for="input-2"
|
||||
size="lg"
|
||||
class="mb-3"
|
||||
>
|
||||
<label class="input-2" for="input-2">{{ $t('form.amount') }}</label>
|
||||
<b-input-group id="input-group-2" class="border border-default" size="lg">
|
||||
<b-input-group-prepend class="p-2 d-none d-md-block">
|
||||
<div class="h3 pt-3 pr-3">GDD</div>
|
||||
<div class="m-1 mt-2">GDD</div>
|
||||
</b-input-group-prepend>
|
||||
|
||||
<b-form-input
|
||||
id="input-2"
|
||||
v-model="form.amount"
|
||||
type="text"
|
||||
v-focus="amountFocused"
|
||||
@focus="amountFocused = !amountFocused"
|
||||
@focus="amountFocused = true"
|
||||
@blur="normalizeAmount(valid)"
|
||||
:placeholder="$n(0.01)"
|
||||
style="font-size: xx-large; padding-left: 20px"
|
||||
style="font-size: large"
|
||||
class="pl-3"
|
||||
></b-form-input>
|
||||
</b-input-group>
|
||||
</validation-provider>
|
||||
</div>
|
||||
|
||||
<div class="mt-4">
|
||||
<validation-provider
|
||||
:rules="{
|
||||
required: true,
|
||||
@ -95,20 +99,20 @@
|
||||
v-slot="{ errors }"
|
||||
>
|
||||
<b-row>
|
||||
<b-col class="text-left p-3 p-sm-1">{{ $t('form.memo') }}</b-col>
|
||||
<b-col v-if="errors" class="text-right p-3 p-sm-1">
|
||||
<span v-for="error in errors" class="errors" :key="error">{{ error }}</span>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-input-group id="input-group-3">
|
||||
<b-input-group-prepend class="p-3 d-none d-md-block">
|
||||
<b-icon icon="chat-right-text" class="display-3"></b-icon>
|
||||
<label class="input-3" for="input-3">{{ $t('form.memo') }}</label>
|
||||
<b-input-group id="input-group-3" class="border border-default">
|
||||
<b-input-group-prepend class="d-none d-md-block">
|
||||
<b-icon icon="chat-right-text" class="display-4 m-3 mt-4"></b-icon>
|
||||
</b-input-group-prepend>
|
||||
<b-form-textarea
|
||||
id="input-3"
|
||||
rows="3"
|
||||
v-model="form.memo"
|
||||
class="pl-3"
|
||||
style="font-size: x-large"
|
||||
></b-form-textarea>
|
||||
</b-input-group>
|
||||
</validation-provider>
|
||||
@ -153,6 +157,7 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
amountFocused: false,
|
||||
emailFocused: false,
|
||||
form: {
|
||||
email: '',
|
||||
amount: '',
|
||||
@ -181,10 +186,14 @@ export default {
|
||||
this.form.amount = data.amount
|
||||
},
|
||||
normalizeAmount(isValid) {
|
||||
this.amountFocused = !this.amountFocused
|
||||
this.amountFocused = false
|
||||
if (!isValid) return
|
||||
this.form.amountValue = Number(this.form.amount.replace(',', '.'))
|
||||
this.form.amount = this.$n(this.form.amountValue, 'decimal')
|
||||
this.form.amount = this.$n(this.form.amountValue, 'ungroupedDecimal')
|
||||
},
|
||||
normalizeEmail() {
|
||||
this.emailFocused = false
|
||||
this.form.email = this.form.email.trim()
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
<template>
|
||||
<b-row v-if="!error">
|
||||
<b-col>
|
||||
<b-card class="p-0 p-md-3" style="background-color: #ebebeba3 !important">
|
||||
<div class="display-2 p-4">
|
||||
<b-card class="p-0" style="background-color: #ebebeba3 !important">
|
||||
<div class="p-4">
|
||||
{{ $t('form.thx') }}
|
||||
<hr />
|
||||
{{ $t('form.send_transaction_success') }}
|
||||
</div>
|
||||
<p class="text-center">
|
||||
<p class="text-center mt-3">
|
||||
<b-button variant="success" @click="$emit('on-reset')">{{ $t('form.close') }}</b-button>
|
||||
</p>
|
||||
</b-card>
|
||||
@ -15,13 +15,13 @@
|
||||
</b-row>
|
||||
<b-row v-else>
|
||||
<b-col>
|
||||
<b-card class="p-0 p-md-3" style="background-color: #ebebeba3 !important">
|
||||
<div class="display-2 p-4">
|
||||
<b-card class="p-0" style="background-color: #ebebeba3 !important">
|
||||
<div class="p-4" style="font-size: 1.5rem">
|
||||
{{ $t('form.sorry') }}
|
||||
<hr />
|
||||
{{ $t('form.send_transaction_error') }}
|
||||
</div>
|
||||
<p class="text-center">
|
||||
<p class="text-center mt-3">
|
||||
<b-button variant="success" @click="$emit('on-reset')">{{ $t('form.close') }}</b-button>
|
||||
</p>
|
||||
</b-card>
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
<template>
|
||||
<div>
|
||||
<b-row>
|
||||
<b-col>
|
||||
<b-card style="background-color: #ebebeba3 !important">
|
||||
<b-col class="p-0">
|
||||
<b-card class="p-0" style="background-color: #ebebeba3 !important">
|
||||
{{ pending ? '—' : $n(balance, 'decimal') }} GDD
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col>
|
||||
<b-card class="lg-h2 text-right" style="background-color: #ebebeba3 !important">
|
||||
<b-col class="pr-0">
|
||||
<b-card class="p-0 text-right" style="background-color: #ebebeba3 !important">
|
||||
{{ pending ? '—' : $n(GdtBalance, 'decimal') }} GDT
|
||||
</b-card>
|
||||
</b-col>
|
||||
|
||||
@ -56,6 +56,11 @@ describe('ResetPassword', () => {
|
||||
$router: {
|
||||
push: routerPushMock,
|
||||
},
|
||||
$loading: {
|
||||
show: jest.fn(() => {
|
||||
return { hide: jest.fn() }
|
||||
}),
|
||||
},
|
||||
}
|
||||
|
||||
const stubs = {
|
||||
|
||||
@ -154,6 +154,9 @@ export default {
|
||||
}
|
||||
},
|
||||
async authenticate() {
|
||||
const loader = this.$loading.show({
|
||||
container: this.$refs.submitButton,
|
||||
})
|
||||
const optin = this.$route.params.optin
|
||||
const result = await loginAPI.loginViaEmailVerificationCode(optin)
|
||||
if (result.success) {
|
||||
@ -163,6 +166,7 @@ export default {
|
||||
} else {
|
||||
this.$toast.error(result.result.message)
|
||||
}
|
||||
loader.hide()
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
<div class="card-profile-stats d-flex justify-content-center mt-md-5">
|
||||
<div>
|
||||
<span class="heading">
|
||||
{{ $n(balance) }}
|
||||
{{ $n(balance, 'decimal') }}
|
||||
</span>
|
||||
<span class="description">GDD</span>
|
||||
</div>
|
||||
|
||||
@ -31,7 +31,7 @@
|
||||
<b-container>
|
||||
<b-form @keyup.prevent="loadSubmitButton">
|
||||
<b-row class="mb-3">
|
||||
<b-col class="col-lg-3 col-md-12 col-sm-12 text-md-left text-lg-right">
|
||||
<b-col class="col-12 col-lg-3 col-md-12 col-sm-12 text-md-left text-lg-right">
|
||||
<small>{{ $t('form.firstname') }}</small>
|
||||
</b-col>
|
||||
<b-col v-if="showUserData" class="col-sm-10 col-md-9">
|
||||
@ -42,7 +42,7 @@
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row class="mb-3">
|
||||
<b-col class="col-lg-3 col-md-12 col-sm-12 text-md-left text-lg-right">
|
||||
<b-col class="col-12 col-lg-3 col-md-12 col-sm-12 text-md-left text-lg-right">
|
||||
<small>{{ $t('form.lastname') }}</small>
|
||||
</b-col>
|
||||
<b-col v-if="showUserData" class="col-sm-10 col-md-9">
|
||||
@ -52,8 +52,8 @@
|
||||
<b-input type="text" v-model="form.lastName"></b-input>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row class="mb-3">
|
||||
<b-col class="col-lg-3 col-md-10 col-sm-10 text-md-left text-lg-right">
|
||||
<b-row class="mb-3" v-show="false">
|
||||
<b-col class="col-12 col-lg-3 col-md-10 col-sm-10 text-md-left text-lg-right">
|
||||
<small>{{ $t('form.description') }}</small>
|
||||
</b-col>
|
||||
<b-col v-if="showUserData" class="col-sm-10 col-md-9">
|
||||
|
||||
@ -0,0 +1,127 @@
|
||||
import { mount } from '@vue/test-utils'
|
||||
import UserCardFormPasswort from './UserCard_FormUserPasswort'
|
||||
import loginAPI from '../../../apis/loginAPI'
|
||||
// import flushPromises from 'flush-promises'
|
||||
|
||||
jest.mock('../../../apis/loginAPI')
|
||||
|
||||
const localVue = global.localVue
|
||||
|
||||
const changePasswordProfileMock = jest.fn()
|
||||
loginAPI.changePasswordProfile = changePasswordProfileMock
|
||||
|
||||
const toastSuccessMock = jest.fn()
|
||||
const toastErrorMock = jest.fn()
|
||||
|
||||
describe('UserCardFormUserPasswort', () => {
|
||||
let wrapper
|
||||
|
||||
const mocks = {
|
||||
$t: jest.fn((t) => t),
|
||||
$store: {
|
||||
state: {
|
||||
sessionId: 1,
|
||||
email: 'user@example.org',
|
||||
},
|
||||
},
|
||||
$toast: {
|
||||
success: toastSuccessMock,
|
||||
error: toastErrorMock,
|
||||
},
|
||||
}
|
||||
|
||||
const Wrapper = () => {
|
||||
return mount(UserCardFormPasswort, { localVue, mocks })
|
||||
}
|
||||
|
||||
describe('mount', () => {
|
||||
beforeEach(() => {
|
||||
wrapper = Wrapper()
|
||||
})
|
||||
|
||||
it('renders the component', () => {
|
||||
expect(wrapper.find('div#change_pwd').exists()).toBeTruthy()
|
||||
})
|
||||
|
||||
it('has a change password button', () => {
|
||||
expect(wrapper.find('a').exists()).toBeTruthy()
|
||||
})
|
||||
|
||||
it('has a change password button with text "form.change-password"', () => {
|
||||
expect(wrapper.find('a').text()).toEqual('form.change-password')
|
||||
})
|
||||
|
||||
it('has a change password button with a pencil icon', () => {
|
||||
expect(wrapper.find('svg.bi-pencil').exists()).toBeTruthy()
|
||||
})
|
||||
|
||||
describe('change password from', () => {
|
||||
let form
|
||||
|
||||
beforeEach(async () => {
|
||||
wrapper.find('a').trigger('click')
|
||||
await wrapper.vm.$nextTick()
|
||||
form = wrapper.find('form')
|
||||
})
|
||||
|
||||
it('has a change password form', () => {
|
||||
expect(form.exists()).toBeTruthy()
|
||||
})
|
||||
|
||||
it('has a cancel button', () => {
|
||||
expect(form.find('svg.bi-x-circle').exists()).toBeTruthy()
|
||||
})
|
||||
|
||||
it('closes the form when cancel button is clicked', async () => {
|
||||
form.find('svg.bi-x-circle').trigger('click')
|
||||
await wrapper.vm.$nextTick()
|
||||
expect(wrapper.find('input').exists()).toBeFalsy()
|
||||
})
|
||||
|
||||
it('has three input fields', () => {
|
||||
expect(form.findAll('input')).toHaveLength(3)
|
||||
})
|
||||
|
||||
it('switches the first input type to text when show password is clicked', async () => {
|
||||
form.findAll('button').at(0).trigger('click')
|
||||
await wrapper.vm.$nextTick()
|
||||
expect(form.findAll('input').at(0).attributes('type')).toEqual('text')
|
||||
})
|
||||
|
||||
it('switches the second input type to text when show password is clicked', async () => {
|
||||
form.findAll('button').at(1).trigger('click')
|
||||
await wrapper.vm.$nextTick()
|
||||
expect(form.findAll('input').at(1).attributes('type')).toEqual('text')
|
||||
})
|
||||
|
||||
it('switches the third input type to text when show password is clicked', async () => {
|
||||
form.findAll('button').at(2).trigger('click')
|
||||
await wrapper.vm.$nextTick()
|
||||
expect(form.findAll('input').at(2).attributes('type')).toEqual('text')
|
||||
})
|
||||
|
||||
it('has a submit button', () => {
|
||||
expect(form.find('button[type="submit"]').exists()).toBeTruthy()
|
||||
})
|
||||
|
||||
/*
|
||||
describe('submit', () => {
|
||||
beforeEach(async () => {
|
||||
await form.findAll('input').at(0).setValue('1234')
|
||||
await form.findAll('input').at(1).setValue('Aa123456')
|
||||
await form.findAll('input').at(2).setValue('Aa123456')
|
||||
form.trigger('submit')
|
||||
await wrapper.vm.$nextTick()
|
||||
await flushPromises()
|
||||
})
|
||||
|
||||
it('calls the API', async () => {
|
||||
await wrapper.vm.$nextTick()
|
||||
await flushPromises()
|
||||
expect(changePasswordProfileMock).toHaveBeenCalledWith(1, 'user@example.org', '1234', 'Aa123456')
|
||||
})
|
||||
})
|
||||
*/
|
||||
})
|
||||
})
|
||||
})
|
||||
@ -4,14 +4,14 @@
|
||||
<b-form @keyup.prevent="loadSubmitButton">
|
||||
<b-row class="mb-4 text-right">
|
||||
<b-col class="text-right">
|
||||
<a href="#change_pwd" v-if="edit_pwd" @click="edit_pwd = !edit_pwd">
|
||||
<span>{{ $t('form.password') }} {{ $t('form.change') }}</span>
|
||||
<a href="#change_pwd" v-if="!editPassword" @click="editPassword = !editPassword">
|
||||
<span>{{ $t('form.change-password') }}</span>
|
||||
<b-icon class="pointer ml-3" icon="pencil" />
|
||||
</a>
|
||||
|
||||
<b-icon
|
||||
v-else
|
||||
@click="edit_pwd = !edit_pwd"
|
||||
@click="cancelEdit()"
|
||||
class="pointer"
|
||||
icon="x-circle"
|
||||
variant="danger"
|
||||
@ -19,9 +19,9 @@
|
||||
</b-col>
|
||||
</b-row>
|
||||
|
||||
<div v-if="!edit_pwd">
|
||||
<div v-if="editPassword">
|
||||
<b-row class="mb-5">
|
||||
<b-col class="col-lg-3 col-md-10 col-sm-10 text-md-left text-lg-right">
|
||||
<b-col class="col-12 col-lg-3 col-md-10 col-sm-10 text-md-left text-lg-right">
|
||||
<small>{{ $t('form.password_old') }}</small>
|
||||
</b-col>
|
||||
<b-col class="col-md-9 col-sm-10">
|
||||
@ -45,7 +45,7 @@
|
||||
</b-row>
|
||||
|
||||
<b-row class="mb-3">
|
||||
<b-col class="col-lg-3 col-md-10 col-sm-10 text-md-left text-lg-right">
|
||||
<b-col class="col-12 col-lg-3 col-md-10 col-sm-10 text-md-left text-lg-right">
|
||||
<small>{{ $t('form.password_new') }}</small>
|
||||
</b-col>
|
||||
<b-col class="col-md-9 col-sm-10">
|
||||
@ -68,7 +68,7 @@
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row class="mb-3">
|
||||
<b-col class="col-lg-3 col-md-10 col-sm-10 text-md-left text-lg-right">
|
||||
<b-col class="col-12 col-lg-3 col-md-10 col-sm-10 text-md-left text-lg-right">
|
||||
<small>{{ $t('form.password_new_repeat') }}</small>
|
||||
</b-col>
|
||||
<b-col class="col-md-9 col-sm-10">
|
||||
@ -92,7 +92,7 @@
|
||||
</b-row>
|
||||
<b-row>
|
||||
<b-col></b-col>
|
||||
<b-col>
|
||||
<b-col class="col-12">
|
||||
<transition name="hint" appear>
|
||||
<div v-if="passwordValidation.errors.length > 0" class="hints">
|
||||
<ul>
|
||||
@ -105,7 +105,7 @@
|
||||
</b-col>
|
||||
</b-row>
|
||||
|
||||
<b-row class="text-right" v-if="!edit_pwd">
|
||||
<b-row class="text-right" v-if="editPassword">
|
||||
<b-col>
|
||||
<div class="text-right" ref="submitButton">
|
||||
<b-button
|
||||
@ -132,7 +132,7 @@ export default {
|
||||
name: 'FormUserPasswort',
|
||||
data() {
|
||||
return {
|
||||
edit_pwd: true,
|
||||
editPassword: false,
|
||||
email: null,
|
||||
password: '',
|
||||
passwordNew: '',
|
||||
@ -144,6 +144,12 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
cancelEdit() {
|
||||
this.editPassword = false
|
||||
this.password = ''
|
||||
this.passwordNew = ''
|
||||
this.passwordNewRepeat = ''
|
||||
},
|
||||
togglePasswordVisibilityNewPwd() {
|
||||
this.passwordVisibleNewPwd = !this.passwordVisibleNewPwd
|
||||
},
|
||||
@ -165,18 +171,19 @@ export default {
|
||||
this.loading = true
|
||||
}
|
||||
},
|
||||
async onSubmit() {
|
||||
// console.log(this.data)
|
||||
async onSubmit(event) {
|
||||
event.preventDefault()
|
||||
const result = await loginAPI.changePasswordProfile(
|
||||
this.$store.state.sessionId,
|
||||
this.email,
|
||||
this.$store.state.email,
|
||||
this.password,
|
||||
this.passwordNew,
|
||||
)
|
||||
if (result.success) {
|
||||
alert('changePassword success')
|
||||
this.$toast.success(this.$t('site.thx.reset'))
|
||||
this.cancelEdit()
|
||||
} else {
|
||||
alert(result.result.message)
|
||||
this.$toast.error(result.result.message)
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
@ -27,9 +27,9 @@ describe('UserProfileOverview', () => {
|
||||
expect(wrapper.findComponent({ name: 'FormUserData' }).exists()).toBeTruthy()
|
||||
})
|
||||
|
||||
it('has a user name form', () => {
|
||||
expect(wrapper.findComponent({ name: 'FormUsername' }).exists()).toBeTruthy()
|
||||
})
|
||||
// it('has a user name form', () => {
|
||||
// expect(wrapper.findComponent({ name: 'FormUsername' }).exists()).toBeTruthy()
|
||||
// })
|
||||
|
||||
it('has a user password form', () => {
|
||||
expect(wrapper.findComponent({ name: 'FormUserPasswort' }).exists()).toBeTruthy()
|
||||
|
||||
@ -2,21 +2,21 @@
|
||||
<b-container fluid>
|
||||
<user-card :balance="balance" :transactionCount="transactionCount"></user-card>
|
||||
<form-user-data />
|
||||
<form-username />
|
||||
<!--<form-username />-->
|
||||
<form-user-passwort />
|
||||
</b-container>
|
||||
</template>
|
||||
<script>
|
||||
import UserCard from './UserProfile/UserCard.vue'
|
||||
import FormUserData from './UserProfile/UserCard_FormUserData.vue'
|
||||
import FormUsername from './UserProfile/UserCard_FormUsername.vue'
|
||||
// import FormUsername from './UserProfile/UserCard_FormUsername.vue'
|
||||
import FormUserPasswort from './UserProfile/UserCard_FormUserPasswort.vue'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
UserCard,
|
||||
FormUserData,
|
||||
FormUsername,
|
||||
// FormUsername,
|
||||
FormUserPasswort,
|
||||
},
|
||||
props: {
|
||||
|
||||
@ -1,85 +1,4 @@
|
||||
|
||||
#########################################################################################################
|
||||
# Prepare debug
|
||||
#########################################################################################################
|
||||
FROM gradido/login_dependencies:gcc9-debug-3 as prepare_debug
|
||||
|
||||
ENV DOCKER_WORKDIR="/code"
|
||||
WORKDIR ${DOCKER_WORKDIR}
|
||||
|
||||
RUN echo '/usr/local/lib' >> /etc/ld.so.conf && ldconfig
|
||||
|
||||
COPY ./CMakeLists.txt.lib ./CMakeLists.txt
|
||||
RUN ln -s /usr/local/googletest ./googletest
|
||||
COPY ./src ./src
|
||||
COPY ./cmake/CodeCoverage.cmake ./cmake/CodeCoverage.cmake
|
||||
COPY ./dependencies/cmake-modules ./dependencies/cmake-modules
|
||||
COPY ./dependencies/spirit-po ./dependencies/spirit-po
|
||||
COPY ./dependencies/tinf ./dependencies/tinf
|
||||
COPY ./scripts ./scripts
|
||||
|
||||
|
||||
#########################################################################################################
|
||||
# Install Coverage tool
|
||||
#########################################################################################################
|
||||
FROM prepare_debug as coverage
|
||||
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends python3-pip && \
|
||||
apt-get autoclean && \
|
||||
apt-get autoremove && \
|
||||
apt-get clean && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN pip3 install gcovr setuptools wheel && \
|
||||
pip3 install fastcov
|
||||
|
||||
|
||||
#########################################################################################################
|
||||
# Build test
|
||||
#########################################################################################################
|
||||
FROM coverage as test
|
||||
|
||||
ENV DOCKER_WORKDIR="/code"
|
||||
WORKDIR ${DOCKER_WORKDIR}
|
||||
|
||||
|
||||
RUN if [ ! -d "./build_cov" ] ; then mkdir build_cov; fi
|
||||
|
||||
RUN cd build_cov && \
|
||||
cmake -DCMAKE_BUILD_TYPE=Debug -DCOLLECT_COVERAGE_DATA=ON -DCOVERAGE_TOOL=fastcov .. && \
|
||||
make -j$(nproc) Gradido_LoginServer_Test
|
||||
|
||||
#RUN chmod +x build_cov/bin/Gradido_LoginServer_Test
|
||||
#CMD gdb -ex run ./build_cov/bin/Gradido_LoginServer_Test
|
||||
#CMD ./build_cov/bin/Gradido_LoginServer_Test
|
||||
|
||||
#ENTRYPOINT make -C build_cov coverage
|
||||
CMD cd build_cov && make coverage && \
|
||||
if [ ! -d "./coverage" ] ; then mkdir coverage; fi && \
|
||||
cp coverage.info ./coverage/
|
||||
|
||||
#########################################################################################################
|
||||
# Build debug
|
||||
#########################################################################################################
|
||||
FROM prepare_debug as debug
|
||||
|
||||
ENV DOCKER_WORKDIR="/code"
|
||||
WORKDIR ${DOCKER_WORKDIR}
|
||||
|
||||
RUN mkdir build && \
|
||||
cd build && \
|
||||
cmake -DCMAKE_BUILD_TYPE=Debug .. && \
|
||||
make -j$(nproc) Gradido_LoginServer
|
||||
|
||||
RUN cd scripts && \
|
||||
chmod +x compile_pot.sh && \
|
||||
./compile_pot.sh
|
||||
|
||||
RUN chmod +x build/bin/Gradido_LoginServer
|
||||
ENTRYPOINT ["build/bin/Gradido_LoginServer"]
|
||||
|
||||
#########################################################################################################
|
||||
# Build release
|
||||
#########################################################################################################
|
||||
|
||||
@ -1,3 +1,14 @@
|
||||
# Login-Server Build dependencies for alpine
|
||||
# Uploaded to hub.docker.com with the tag:
|
||||
# gradido/login_dependencies:alpine-debug-3 for debug build
|
||||
# and
|
||||
# gradido/login_dependencies:alpine-release-3 for release build
|
||||
# Update tag when dependencies are added or removed
|
||||
|
||||
# Control Build Type with ARG BUILD_TYPE
|
||||
# Valid values do you find here: https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html
|
||||
# Default is set to Debug
|
||||
|
||||
|
||||
##### BUILD-ENV #####
|
||||
FROM alpine:3.13.5 as alpine-build
|
||||
49
login_server/Dockerfiles/alpine/Dockerfile.release
Normal file
49
login_server/Dockerfiles/alpine/Dockerfile.release
Normal file
@ -0,0 +1,49 @@
|
||||
|
||||
#########################################################################################################
|
||||
# Build release
|
||||
#########################################################################################################
|
||||
FROM gradido/login_dependencies:alpine-release-3 as release
|
||||
|
||||
ENV DOCKER_WORKDIR="/code"
|
||||
WORKDIR ${DOCKER_WORKDIR}
|
||||
|
||||
COPY ./CMakeLists.txt.lib ./CMakeLists.txt
|
||||
COPY ./src ./src
|
||||
RUN ln -s /usr/local/googletest ./googletest
|
||||
COPY ./dependencies/cmake-modules ./dependencies/cmake-modules
|
||||
COPY ./dependencies/spirit-po ./dependencies/spirit-po
|
||||
COPY ./dependencies/tinf ./dependencies/tinf
|
||||
COPY ./scripts ./scripts
|
||||
|
||||
RUN mkdir build && \
|
||||
cd build && \
|
||||
cmake -DCMAKE_BUILD_TYPE=Release .. && \
|
||||
make -j$(nproc) Gradido_LoginServer
|
||||
|
||||
RUN cd scripts && \
|
||||
chmod +x compile_pot.sh && \
|
||||
./compile_pot.sh
|
||||
|
||||
|
||||
#########################################################################################################
|
||||
# run release
|
||||
#########################################################################################################
|
||||
#From alpine:latest as login_server
|
||||
FROM alpine:3.13.5 as login_server
|
||||
|
||||
USER root
|
||||
WORKDIR "/usr/bin"
|
||||
|
||||
COPY --from=release /code/build/bin/Gradido_LoginServer /usr/bin/
|
||||
|
||||
COPY --from=release /usr/local/lib/mariadb/libmariadb.so.3 /usr/local/lib/
|
||||
COPY --from=release /usr/local/lib/libPoco* /usr/local/lib/
|
||||
COPY --from=release /usr/local/lib/libproto* /usr/local/lib/
|
||||
COPY --from=release /usr/lib/libsodium.so.23 /usr/lib/
|
||||
COPY --from=release /usr/lib/libstdc++.so.6 /usr/lib/
|
||||
COPY --from=release /usr/lib/libgcc_s.so.1 /usr/lib/
|
||||
|
||||
|
||||
RUN chmod +x /usr/bin/Gradido_LoginServer
|
||||
ENTRYPOINT ["/usr/bin/Gradido_LoginServer"]
|
||||
#CMD Gradido_LoginServer
|
||||
@ -1,4 +1,9 @@
|
||||
|
||||
|
||||
# Login Server build which contain the config file, found on docker hub with tag:
|
||||
# gradido/login_server:with-config
|
||||
# Used for community-server tests on staging
|
||||
|
||||
#########################################################################################################
|
||||
# Build release
|
||||
#########################################################################################################
|
||||
38
login_server/Dockerfiles/ubuntu/Dockerfile.debug
Normal file
38
login_server/Dockerfiles/ubuntu/Dockerfile.debug
Normal file
@ -0,0 +1,38 @@
|
||||
|
||||
#########################################################################################################
|
||||
# Prepare debug
|
||||
#########################################################################################################
|
||||
FROM gradido/login_dependencies:gcc9-debug-3 as prepare_debug
|
||||
|
||||
ENV DOCKER_WORKDIR="/code"
|
||||
WORKDIR ${DOCKER_WORKDIR}
|
||||
|
||||
RUN echo '/usr/local/lib' >> /etc/ld.so.conf && ldconfig
|
||||
|
||||
COPY ./CMakeLists.txt.lib ./CMakeLists.txt
|
||||
RUN ln -s /usr/local/googletest ./googletest
|
||||
COPY ./src ./src
|
||||
COPY ./dependencies/cmake-modules ./dependencies/cmake-modules
|
||||
COPY ./dependencies/spirit-po ./dependencies/spirit-po
|
||||
COPY ./dependencies/tinf ./dependencies/tinf
|
||||
COPY ./scripts ./scripts
|
||||
|
||||
|
||||
#########################################################################################################
|
||||
# Build debug
|
||||
#########################################################################################################
|
||||
FROM prepare_debug as debug
|
||||
|
||||
ENV DOCKER_WORKDIR="/code"
|
||||
WORKDIR ${DOCKER_WORKDIR}
|
||||
|
||||
RUN mkdir build && \
|
||||
cd build && \
|
||||
cmake -DCMAKE_BUILD_TYPE=Debug ..
|
||||
|
||||
RUN cd scripts && \
|
||||
chmod +x compile_pot.sh && \
|
||||
./compile_pot.sh
|
||||
|
||||
CMD cd build && cmake .. -DCMAKE_BUILD_TYPE=Debug && make -j$(nproc) Gradido_LoginServer && ./bin/Gradido_LoginServer
|
||||
|
||||
@ -1,3 +1,12 @@
|
||||
# Login-Server Build dependencies for ubuntu
|
||||
# Uploaded to hub.docker.com with the tag:
|
||||
# gradido/login_dependencies:gcc9-debug-3 for debug build
|
||||
# Update tag when dependencies are added or removed
|
||||
|
||||
# Control Build Type with ARG BUILD_TYPE
|
||||
# Valid values do you find here: https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html
|
||||
# Default is set to Debug
|
||||
|
||||
##### BUILD-ENV #####
|
||||
FROM gcc:9 as gcc9_build
|
||||
|
||||
49
login_server/Dockerfiles/ubuntu/Dockerfile.release
Normal file
49
login_server/Dockerfiles/ubuntu/Dockerfile.release
Normal file
@ -0,0 +1,49 @@
|
||||
|
||||
#########################################################################################################
|
||||
# Build release
|
||||
#########################################################################################################
|
||||
FROM gradido/login_dependencies:ubuntu-release-3 as release
|
||||
|
||||
ENV DOCKER_WORKDIR="/code"
|
||||
WORKDIR ${DOCKER_WORKDIR}
|
||||
|
||||
COPY ./CMakeLists.txt.lib ./CMakeLists.txt
|
||||
COPY ./src ./src
|
||||
RUN ln -s /usr/local/googletest ./googletest
|
||||
COPY ./dependencies/cmake-modules ./dependencies/cmake-modules
|
||||
COPY ./dependencies/spirit-po ./dependencies/spirit-po
|
||||
COPY ./dependencies/tinf ./dependencies/tinf
|
||||
COPY ./scripts ./scripts
|
||||
|
||||
RUN mkdir build && \
|
||||
cd build && \
|
||||
cmake -DCMAKE_BUILD_TYPE=Release .. && \
|
||||
make -j$(nproc) Gradido_LoginServer
|
||||
|
||||
RUN cd scripts && \
|
||||
chmod +x compile_pot.sh && \
|
||||
./compile_pot.sh
|
||||
|
||||
|
||||
#########################################################################################################
|
||||
# run release
|
||||
#########################################################################################################
|
||||
#From alpine:latest as login_server
|
||||
FROM ubuntu:latest as login_server
|
||||
|
||||
USER root
|
||||
WORKDIR "/usr/bin"
|
||||
|
||||
COPY --from=release /code/build/bin/Gradido_LoginServer /usr/bin/
|
||||
|
||||
COPY --from=release /usr/local/lib/mariadb/libmariadb.so.3 /usr/local/lib/
|
||||
COPY --from=release /usr/local/lib/libPoco* /usr/local/lib/
|
||||
COPY --from=release /usr/local/lib/libproto* /usr/local/lib/
|
||||
COPY --from=release /usr/lib/libsodium.so.23 /usr/lib/
|
||||
COPY --from=release /usr/lib/libstdc++.so.6 /usr/lib/
|
||||
COPY --from=release /usr/lib/libgcc_s.so.1 /usr/lib/
|
||||
|
||||
|
||||
RUN chmod +x /usr/bin/Gradido_LoginServer
|
||||
ENTRYPOINT ["/usr/bin/Gradido_LoginServer"]
|
||||
#CMD Gradido_LoginServer
|
||||
58
login_server/Dockerfiles/ubuntu/Dockerfile.test
Normal file
58
login_server/Dockerfiles/ubuntu/Dockerfile.test
Normal file
@ -0,0 +1,58 @@
|
||||
|
||||
#########################################################################################################
|
||||
# Prepare debug
|
||||
#########################################################################################################
|
||||
FROM gradido/login_dependencies:gcc9-debug-3 as prepare_debug
|
||||
|
||||
ENV DOCKER_WORKDIR="/code"
|
||||
WORKDIR ${DOCKER_WORKDIR}
|
||||
|
||||
RUN echo '/usr/local/lib' >> /etc/ld.so.conf && ldconfig
|
||||
|
||||
COPY ./CMakeLists.txt.lib ./CMakeLists.txt
|
||||
RUN ln -s /usr/local/googletest ./googletest
|
||||
COPY ./src ./src
|
||||
COPY ./cmake/CodeCoverage.cmake ./cmake/CodeCoverage.cmake
|
||||
COPY ./dependencies/cmake-modules ./dependencies/cmake-modules
|
||||
COPY ./dependencies/spirit-po ./dependencies/spirit-po
|
||||
COPY ./dependencies/tinf ./dependencies/tinf
|
||||
COPY ./scripts ./scripts
|
||||
|
||||
|
||||
#########################################################################################################
|
||||
# Install Coverage tool
|
||||
#########################################################################################################
|
||||
FROM prepare_debug as coverage
|
||||
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends python3-pip && \
|
||||
apt-get autoclean && \
|
||||
apt-get autoremove && \
|
||||
apt-get clean && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
# fastcov need gcovr to work
|
||||
RUN pip3 install gcovr setuptools wheel && \
|
||||
pip3 install fastcov
|
||||
|
||||
|
||||
#########################################################################################################
|
||||
# Build test
|
||||
#########################################################################################################
|
||||
FROM coverage as test
|
||||
|
||||
ENV DOCKER_WORKDIR="/code"
|
||||
WORKDIR ${DOCKER_WORKDIR}
|
||||
|
||||
|
||||
RUN if [ ! -d "./build_cov" ] ; then mkdir build_cov; fi
|
||||
|
||||
RUN cd build_cov && \
|
||||
cmake -DCMAKE_BUILD_TYPE=Debug -DCOLLECT_COVERAGE_DATA=ON -DCOVERAGE_TOOL=fastcov .. && \
|
||||
make -j$(nproc) Gradido_LoginServer_Test
|
||||
|
||||
#ENTRYPOINT make -C build_cov coverage
|
||||
CMD cd build_cov && make coverage && \
|
||||
if [ ! -d "./coverage" ] ; then mkdir coverage; fi && \
|
||||
cp coverage.info ./coverage/
|
||||
|
||||
Binary file not shown.
@ -7,438 +7,452 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-05-18 12:17+0200\n"
|
||||
"PO-Revision-Date: 2021-05-18 12:21+0200\n"
|
||||
"POT-Creation-Date: 2021-06-21 13:37+0200\n"
|
||||
"PO-Revision-Date: 2021-06-21 13:38+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: de_DE\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.4.3\n"
|
||||
"X-Generator: Poedit 3.0\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: F:\\Gradido\\gradido_stage2_local\\login_server\\src\\cpsp\\login.cpsp:181
|
||||
#: F:\\Gradido\\gradido_stage2_local\\login_server\\src\\cpsp\\login.cpsp:260
|
||||
#: build/http_pages/LoginPage.cpp:196 build/http_pages/LoginPage.cpp:275
|
||||
msgid "Login"
|
||||
msgstr "Anmeldung"
|
||||
|
||||
#: F:\\Gradido\\gradido_stage2_local\\login_server\\src\\cpsp\\login.cpsp:181
|
||||
#: build/http_pages/LoginPage.cpp:196
|
||||
msgid "E-Mail or password isn't right, please try again!"
|
||||
msgstr ""
|
||||
"E-Mail und Passwort Kombination stimmen nicht, bitte versuche es erneut. "
|
||||
|
||||
#: F:\\Gradido\\gradido_stage2_local\\login_server\\src\\cpsp\\login.cpsp:190
|
||||
#: build/http_pages/LoginPage.cpp:205
|
||||
msgid "Passwort"
|
||||
msgstr "Passwort"
|
||||
|
||||
#: F:\\Gradido\\gradido_stage2_local\\login_server\\src\\cpsp\\login.cpsp:190
|
||||
#: build/http_pages/LoginPage.cpp:205
|
||||
msgid ""
|
||||
"Passwort wird noch berechnet, bitte versuche es in etwa 1 Minute erneut."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_stage2_local\\login_server\\src\\cpsp\\login.cpsp:193
|
||||
#: F:\\Gradido\\gradido_stage2_local\\login_server\\src\\cpsp\\login.cpsp:196
|
||||
#: build/http_pages/LoginPage.cpp:208 build/http_pages/LoginPage.cpp:211
|
||||
msgid "User"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_stage2_local\\login_server\\src\\cpsp\\login.cpsp:193
|
||||
#: build/http_pages/LoginPage.cpp:208
|
||||
msgid "Error in saved data, the server admin will look at it."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_stage2_local\\login_server\\src\\cpsp\\login.cpsp:196
|
||||
#: build/http_pages/LoginPage.cpp:211
|
||||
msgid "Benutzer ist deaktiviert, kein Login möglich!"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_stage2_local\\login_server\\src\\cpsp\\login.cpsp:260
|
||||
#: build/http_pages/LoginPage.cpp:275
|
||||
msgid "Username and password are needed!"
|
||||
msgstr "E-Mail und Passwort werden benötigt!"
|
||||
|
||||
#: F:\\Gradido\\gradido_stage2_local\\login_server\\src\\cpsp\\login.cpsp:290
|
||||
#: model/Session.cpp:164 model/Session.cpp:171 model/Session.cpp:223
|
||||
#: model/Session.cpp:234
|
||||
#: build/http_pages/LoginPage.cpp:376 src/cpp/model/Session.cpp:161
|
||||
#: src/cpp/model/Session.cpp:168 src/cpp/model/Session.cpp:220
|
||||
#: src/cpp/model/Session.cpp:231
|
||||
msgid "E-Mail"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_stage2_local\\login_server\\src\\cpsp\\login.cpsp:291
|
||||
#: SingletonManager/SessionManager.cpp:608
|
||||
#: SingletonManager/SessionManager.cpp:614
|
||||
#: SingletonManager/SessionManager.cpp:620
|
||||
#: SingletonManager/SessionManager.cpp:626
|
||||
#: SingletonManager/SessionManager.cpp:632
|
||||
#: SingletonManager/SessionManager.cpp:638
|
||||
#: build/http_pages/LoginPage.cpp:381
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:603
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:609
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:614
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:619
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:624
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:629
|
||||
msgid "Password"
|
||||
msgstr "Passwort"
|
||||
|
||||
#: F:\\Gradido\\gradido_stage2_local\\login_server\\src\\cpsp\\login.cpsp:292
|
||||
#: build/http_pages/LoginPage.cpp:384
|
||||
msgid " Login "
|
||||
msgstr "Anmeldung"
|
||||
|
||||
#: F:\\Gradido\\gradido_stage2_local\\login_server\\src\\cpsp\\login.cpsp:297
|
||||
#: build/http_pages/LoginPage.cpp:391
|
||||
msgid "You haven't any account yet? Please follow the link to create one."
|
||||
msgstr "Du hast noch kein Gradido-Konto?"
|
||||
|
||||
#: F:\\Gradido\\gradido_stage2_local\\login_server\\src\\cpsp\\login.cpsp:299
|
||||
#: build/http_pages/LoginPage.cpp:395
|
||||
msgid "Create New Account"
|
||||
msgstr "Neues Konto erstellen"
|
||||
|
||||
#: F:\\Gradido\\gradido_stage2_local\\login_server\\src\\cpsp\\login.cpsp:303
|
||||
#: build/http_pages/LoginPage.cpp:403
|
||||
msgid "Passwort vergessen"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:73
|
||||
#: build/http_pages/CheckEmailPage.cpp:155
|
||||
msgid "E-Mail verifizieren"
|
||||
msgstr "E-Mail überprüfen"
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:78
|
||||
#: build/http_pages/CheckEmailPage.cpp:165
|
||||
msgid ""
|
||||
"Deine E-Mail wurde erfolgreich bestätigt. Du kannst nun Gradidos versenden."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:79
|
||||
#: build/http_pages/CheckEmailPage.cpp:170
|
||||
msgid "Zur Startseite"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:81
|
||||
#: build/http_pages/CheckEmailPage.cpp:175
|
||||
msgid "Bitte gib deinen E-Mail Verification Code ein:"
|
||||
msgstr "Bitte gib deinen E-Mail Verification Code ein:"
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:82
|
||||
#: model/Session.cpp:187
|
||||
#: build/http_pages/CheckEmailPage.cpp:178 src/cpp/model/Session.cpp:184
|
||||
msgid "Email Verification Code"
|
||||
msgstr "Email Verification Code"
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:83
|
||||
#: build/http_pages/CheckEmailPage.cpp:185
|
||||
msgid "Überprüfe Code"
|
||||
msgstr "Überprüfe Code"
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:86
|
||||
#: build/http_pages/CheckEmailPage.cpp:190
|
||||
msgid "Du hast bisher keinen Code erhalten?"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:87
|
||||
#: build/http_pages/CheckEmailPage.cpp:193
|
||||
msgid "E-Mail erneut zuschicken (in Arbeit)"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:90
|
||||
#: build/http_pages/CheckEmailPage.cpp:198
|
||||
msgid "Funktioniert dein E-Mail Verification Code nicht?"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:91
|
||||
#: build/http_pages/CheckEmailPage.cpp:201
|
||||
msgid "Schicke uns eine E-Mail und wir kümmern uns darum: "
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\checkEmail.cpsp:92
|
||||
#: F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\resetPassword.cpsp:151
|
||||
#: build/http_pages/CheckEmailPage.cpp:208
|
||||
#: build/http_pages/ResetPasswordPage.cpp:273
|
||||
msgid "E-Mail an Support schicken"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\resetPassword.cpsp:113
|
||||
#: F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\resetPassword.cpsp:124
|
||||
#: build/http_pages/ResetPasswordPage.cpp:174
|
||||
#: build/http_pages/ResetPasswordPage.cpp:217
|
||||
msgid "Gib bitte hier deine E-Mail Adresse an:"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\resetPassword.cpsp:116
|
||||
#: build/http_pages/ResetPasswordPage.cpp:183
|
||||
msgid "Bestätigen"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\resetPassword.cpsp:126
|
||||
#: build/http_pages/ResetPasswordPage.cpp:225
|
||||
msgid "Hast du dir deine Passphrase notiert oder gemerkt?"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\resetPassword.cpsp:131
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:206
|
||||
#: build/http_pages/ResetPasswordPage.cpp:234
|
||||
#: build/http_pages/PassphrasePage.cpp:373
|
||||
msgid "Ja"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\resetPassword.cpsp:136
|
||||
#: build/http_pages/ResetPasswordPage.cpp:241
|
||||
msgid "Nein"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\resetPassword.cpsp:140
|
||||
#: build/http_pages/ResetPasswordPage.cpp:247
|
||||
msgid "Absenden"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\resetPassword.cpsp:145
|
||||
#: build/http_pages/ResetPasswordPage.cpp:255
|
||||
msgid "Dir wird eine E-Mail zugeschickt um dein Passwort zurückzusetzen."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\resetPassword.cpsp:147
|
||||
#: build/http_pages/ResetPasswordPage.cpp:260
|
||||
msgid "Der Admin hat eine E-Mail bekommen und wird sich bei dir melden."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\resetPassword.cpsp:149
|
||||
#: build/http_pages/ResetPasswordPage.cpp:265
|
||||
msgid ""
|
||||
"Du hast bereits eine E-Mail bekommen. Bitte schau auch in dein Spam-"
|
||||
"Verzeichnis nach. "
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_local\\login_server\\src\\cpsp\\resetPassword.cpsp:150
|
||||
#: build/http_pages/ResetPasswordPage.cpp:268
|
||||
msgid ""
|
||||
"Du hast wirklich keine E-Mail erhalten und auch schon ein paar Minuten "
|
||||
"gewartet?"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:26
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:96
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:117
|
||||
#: model/Session.cpp:468 model/Session.cpp:480 model/Session.cpp:494
|
||||
#: build/http_pages/PassphrasePage.cpp:41
|
||||
#: build/http_pages/PassphrasePage.cpp:111
|
||||
#: build/http_pages/PassphrasePage.cpp:132 src/cpp/model/Session.cpp:465
|
||||
#: src/cpp/model/Session.cpp:477 src/cpp/model/Session.cpp:491
|
||||
msgid "Passphrase"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:27
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:266
|
||||
#: build/http_pages/PassphrasePage.cpp:42
|
||||
#: build/http_pages/PassphrasePage.cpp:451
|
||||
msgid "Neues Konto anlegen"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:28
|
||||
#: build/http_pages/PassphrasePage.cpp:43
|
||||
msgid "2/3"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:96
|
||||
#: build/http_pages/PassphrasePage.cpp:111
|
||||
msgid ""
|
||||
"Diese Passphrase ist ungültig, bitte überprüfen oder neu "
|
||||
"generieren (lassen)."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:117
|
||||
#: build/http_pages/PassphrasePage.cpp:132
|
||||
msgid "intern error please try again later"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:132
|
||||
#: build/http_pages/PassphrasePage.cpp:147
|
||||
msgid "3/3"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:135
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:138
|
||||
#: build/http_pages/PassphrasePage.cpp:150
|
||||
#: build/http_pages/PassphrasePage.cpp:153
|
||||
msgid "1/3"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:137
|
||||
#: build/http_pages/PassphrasePage.cpp:152
|
||||
msgid "Neues Passwort anlegen"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:148
|
||||
#: build/http_pages/PassphrasePage.cpp:270
|
||||
msgid "Passphrase abschreiben"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:159
|
||||
#: build/http_pages/PassphrasePage.cpp:287
|
||||
msgid "Was ist eine Passphrase?"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:160
|
||||
#: build/http_pages/PassphrasePage.cpp:290
|
||||
msgid "Deine Passphrase besteht aus den im grünen Feld angezeigten Wörtern."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:161
|
||||
#: build/http_pages/PassphrasePage.cpp:293
|
||||
msgid "Sie dient deiner Sicherheit."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:162
|
||||
#: build/http_pages/PassphrasePage.cpp:296
|
||||
msgid ""
|
||||
"Du brauchst deine Passphrase um dein Konto wiederherzustellen, wenn du mal "
|
||||
"dein Passwort vergessen haben solltest."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:164
|
||||
#: build/http_pages/PassphrasePage.cpp:300
|
||||
msgid "Deine Passphrase (Groß/Kleinschreibung beachten)"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:169
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:197
|
||||
#: build/http_pages/PassphrasePage.cpp:309
|
||||
#: build/http_pages/PassphrasePage.cpp:352
|
||||
msgid "Was zu tun ist:"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:170
|
||||
#: build/http_pages/PassphrasePage.cpp:312
|
||||
msgid ""
|
||||
"Schreibe dir die obenstehende Passphrase <b>von Hand</b> auf ein Blatt "
|
||||
"Papier!"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:171
|
||||
#: build/http_pages/PassphrasePage.cpp:315
|
||||
msgid "Speichere sie auf keinen Fall auf deinem Rechner oder Mobilgerät!!"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:172
|
||||
#: build/http_pages/PassphrasePage.cpp:318
|
||||
msgid "Bewahre sie an einem sicheren Ort auf!"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:174
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:285
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:290
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:303
|
||||
#: build/http_pages/PassphrasePage.cpp:322
|
||||
#: build/http_pages/PassphrasePage.cpp:478
|
||||
#: build/http_pages/PassphrasePage.cpp:487
|
||||
#: build/http_pages/PassphrasePage.cpp:511
|
||||
msgid "Weiter"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:198
|
||||
#: build/http_pages/PassphrasePage.cpp:355
|
||||
msgid "Hast du dir deine Passphrase gemerkt?"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:199
|
||||
#: build/http_pages/PassphrasePage.cpp:358
|
||||
msgid ""
|
||||
"Dann zeig es mir. Zur Unterstützung gebe ich dir deine Wörter aber in "
|
||||
"anderer Reihenfolge."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:200
|
||||
#: build/http_pages/PassphrasePage.cpp:361
|
||||
msgid "Klicke sie an um sie einzusetzen."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:201
|
||||
#: build/http_pages/PassphrasePage.cpp:364
|
||||
msgid "Überprüfe dabei, ob du alle Wörter richtig geschrieben hast!"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:205
|
||||
#: build/http_pages/PassphrasePage.cpp:370
|
||||
msgid ""
|
||||
"Weil du kein Javascript verwendest geht es direkt weiter. Hast du dir deine "
|
||||
"Passphrase gemerkt oder aufgeschrieben?"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:252
|
||||
#: build/http_pages/PassphrasePage.cpp:429
|
||||
msgid "Deine E-Mail Adresse wurde erfolgreich bestätigt."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:256
|
||||
#: build/http_pages/PassphrasePage.cpp:437
|
||||
msgid "Neue Gradido Adresse anlegen / wiederherstellen"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:257
|
||||
#: build/http_pages/PassphrasePage.cpp:440
|
||||
msgid ""
|
||||
"Möchtest du ein neues Gradido-Konto anlegen oder ein bestehendes "
|
||||
"wiederherstellen?"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:273
|
||||
#: build/http_pages/PassphrasePage.cpp:460
|
||||
msgid "Bestehendes Konto wiederherstellen"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:280
|
||||
#: build/http_pages/PassphrasePage.cpp:469
|
||||
msgid ""
|
||||
"Falls du ein bestehendes Konto wiederherstellen willst, gib hier deine "
|
||||
"Passphrase ein:"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:297
|
||||
#: build/http_pages/PassphrasePage.cpp:497
|
||||
msgid "Konto wiederherstellen / Neues Passwort anlegen"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:299
|
||||
#: build/http_pages/PassphrasePage.cpp:501
|
||||
msgid ""
|
||||
"Um dein Konto wiederherzustellen und dir ein Neues Passwort auswählen zu "
|
||||
"können, tippe hier bitte die Wörter deiner Passphrase in der richtigen "
|
||||
"Reihenfolge ein, welche du dir aufgeschrieben hast."
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:313
|
||||
#: build/http_pages/PassphrasePage.cpp:524
|
||||
msgid "Fehler"
|
||||
msgstr ""
|
||||
|
||||
#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\passphrase.cpsp:314
|
||||
#: build/http_pages/PassphrasePage.cpp:527
|
||||
msgid ""
|
||||
"Ungültige Seite, wenn du das siehst stimmt hier etwas nicht. Bitte wende "
|
||||
"dich an den Server-Admin."
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:150 model/Session.cpp:180 model/Session.cpp:779
|
||||
#: model/Session.cpp:785 model/Session.cpp:1061 model/Session.cpp:1077
|
||||
#: src/cpp/model/Session.cpp:147 src/cpp/model/Session.cpp:177
|
||||
#: src/cpp/model/Session.cpp:645 src/cpp/model/Session.cpp:651
|
||||
#: src/cpp/model/Session.cpp:937 src/cpp/model/Session.cpp:953
|
||||
msgid "Benutzer"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:150
|
||||
#: src/cpp/model/Session.cpp:147
|
||||
msgid "Eingeloggter Benutzer ist kein Admin"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:156 model/Session.cpp:215
|
||||
#: src/cpp/model/Session.cpp:153 src/cpp/model/Session.cpp:212
|
||||
msgid "Vorname"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:156 model/Session.cpp:160 model/Session.cpp:215
|
||||
#: model/Session.cpp:219
|
||||
#: src/cpp/model/Session.cpp:153 src/cpp/model/Session.cpp:157
|
||||
#: src/cpp/model/Session.cpp:212 src/cpp/model/Session.cpp:216
|
||||
msgid ""
|
||||
"Bitte gebe einen Namen an. Mindestens 3 Zeichen, keines folgender Zeichen "
|
||||
"<>&;"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:160 model/Session.cpp:219
|
||||
#: src/cpp/model/Session.cpp:157 src/cpp/model/Session.cpp:216
|
||||
msgid "Nachname"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:164 model/Session.cpp:223
|
||||
#: src/cpp/model/Session.cpp:161 src/cpp/model/Session.cpp:220
|
||||
msgid "Bitte gebe eine gültige E-Mail Adresse an."
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:171
|
||||
#: src/cpp/model/Session.cpp:168
|
||||
msgid "Für diese E-Mail Adresse gibt es bereits einen Account"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:180 model/Session.cpp:187
|
||||
#: src/cpp/model/Session.cpp:177 src/cpp/model/Session.cpp:184
|
||||
msgid "Fehler beim speichern!"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:234
|
||||
#: src/cpp/model/Session.cpp:231
|
||||
msgid "Für diese E-Mail Adresse gibt es bereits ein Konto"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:258
|
||||
#: src/cpp/model/Session.cpp:255
|
||||
msgid "Server"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:258
|
||||
#: src/cpp/model/Session.cpp:255
|
||||
msgid "Fehler beim speichen des Kontos bitte versuche es später noch einmal"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:353 model/Session.cpp:393 model/Session.cpp:966
|
||||
#: model/Session.cpp:975
|
||||
#: src/cpp/model/Session.cpp:350 src/cpp/model/Session.cpp:390
|
||||
#: src/cpp/model/Session.cpp:832 src/cpp/model/Session.cpp:841
|
||||
msgid "E-Mail Verification"
|
||||
msgstr "E-Mail Überprüfung"
|
||||
|
||||
#: model/Session.cpp:353
|
||||
#: src/cpp/model/Session.cpp:350
|
||||
msgid "Du hast dein Konto bereits aktiviert!"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:393
|
||||
#: src/cpp/model/Session.cpp:390
|
||||
msgid "Falscher Code für aktiven Login"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:468
|
||||
#: src/cpp/model/Session.cpp:465
|
||||
msgid "Deine Passphrase ist ungütig"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:480
|
||||
#: src/cpp/model/Session.cpp:477
|
||||
msgid "Ein Fehler trat auf, bitte versuche es erneut"
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:494
|
||||
#: src/cpp/model/Session.cpp:491
|
||||
msgid "Das ist nicht die richtige Passphrase."
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:779
|
||||
#: src/cpp/model/Session.cpp:645
|
||||
msgid "Konnte Community Server nicht erreichen. E-Mail an den Admin ist raus."
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:785
|
||||
#: src/cpp/model/Session.cpp:651
|
||||
msgid ""
|
||||
"Fehler beim Löschen des Accounts. Bitte logge dich erneut ein und "
|
||||
"versuche es nochmal."
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:966
|
||||
#: src/cpp/model/Session.cpp:832
|
||||
msgid "Konnte kein passendes Konto finden."
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:975
|
||||
#: src/cpp/model/Session.cpp:841
|
||||
msgid "Fehler beim laden des Benutzers."
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:1061
|
||||
#: src/cpp/model/Session.cpp:937
|
||||
msgid "Kein gültiger Benutzer, bitte logge dich erneut ein."
|
||||
msgstr ""
|
||||
|
||||
#: model/Session.cpp:1077
|
||||
#: src/cpp/model/Session.cpp:953
|
||||
msgid "Fehler beim generieren der Passphrase, der Admin bekommt eine E-Mail. "
|
||||
msgstr ""
|
||||
|
||||
#: SingletonManager/SessionManager.cpp:609
|
||||
#: src/cpp/model/email/Email.cpp:174
|
||||
msgid "Default Email Subject"
|
||||
msgstr ""
|
||||
|
||||
#: src/cpp/model/email/Email.cpp:180
|
||||
msgid "Error from Gradido Login Server"
|
||||
msgstr "Fehler auf dem Gradido Login Server"
|
||||
|
||||
#: src/cpp/model/email/Email.cpp:200
|
||||
msgid "Gradido: E-Mail Verification"
|
||||
msgstr "Gradido: E-Mail Überprüfung"
|
||||
|
||||
#: src/cpp/model/email/Email.cpp:246
|
||||
msgid "Gradido: Reset Password"
|
||||
msgstr "Gradido: Passwort zurücksetzen"
|
||||
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:604
|
||||
msgid ""
|
||||
"Please enter a valid password with at least 8 characters, upper and lower "
|
||||
"case letters, at least one number and one special character (@$!%*?&+-_)!"
|
||||
@ -447,23 +461,23 @@ msgstr ""
|
||||
"Kleinbuchstaben, mindestens einer Zahl und einem Sonderzeichen (@$!%*?&+-_) "
|
||||
"ein!"
|
||||
|
||||
#: SingletonManager/SessionManager.cpp:615
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:610
|
||||
msgid "Your password is to short!"
|
||||
msgstr "Dein Passwort ist zu kurz!"
|
||||
|
||||
#: SingletonManager/SessionManager.cpp:621
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:615
|
||||
msgid "Your password does not contain lowercase letters!"
|
||||
msgstr "Dein Passwort enthält keine Kleinbuchstaben!"
|
||||
|
||||
#: SingletonManager/SessionManager.cpp:627
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:620
|
||||
msgid "Your password does not contain any capital letters!"
|
||||
msgstr " Dein Passwort enthält keine Großbuchstaben!"
|
||||
|
||||
#: SingletonManager/SessionManager.cpp:633
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:625
|
||||
msgid "Your password does not contain any number!"
|
||||
msgstr "Dein Passwort enthält keine Zahlen!"
|
||||
|
||||
#: SingletonManager/SessionManager.cpp:639
|
||||
#: src/cpp/SingletonManager/SessionManager.cpp:630
|
||||
msgid "Your password does not contain special characters (@$!%*?&+-)!"
|
||||
msgstr "Dein Passwort enthält keine Sonderzeichen (@$!%*?&+-)!"
|
||||
|
||||
@ -493,9 +507,6 @@ msgstr "Dein Passwort enthält keine Sonderzeichen (@$!%*?&+-)!"
|
||||
#~ "Der neue Gradido basiert technisch auf einer Kryptowährung (wie z.B. "
|
||||
#~ "Bitcoin) um für dich die maximale Sicherheit zu gewährleisten."
|
||||
|
||||
#~ msgid "Gradido: E-Mail Verification"
|
||||
#~ msgstr "Gradido: E-Mail Überprüfung"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Der Code stimmt nicht, bitte überprüfe ihn nochmal oder "
|
||||
#~ "registriere dich erneut oder wende dich an den Server-Admin"
|
||||
|
||||
@ -10,8 +10,6 @@
|
||||
|
||||
Poco::JSON::Object* JsonGetLogin::handle(Poco::Dynamic::Var params)
|
||||
{
|
||||
|
||||
int session_id = 0;
|
||||
auto sm = SessionManager::getInstance();
|
||||
auto pt = PendingTasksManager::getInstance();
|
||||
auto observer = SingletonTaskObserver::getInstance();
|
||||
@ -58,4 +56,4 @@ Poco::JSON::Object* JsonGetLogin::handle(Poco::Dynamic::Var params)
|
||||
//printf("[JsonGetLogin] %s\n", user_string.data());
|
||||
return result;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -93,10 +93,10 @@ Poco::JSON::Object* JsonGetUsers::handle(Poco::Dynamic::Var params)
|
||||
result->set("state", "success");
|
||||
|
||||
//Poco::JSON::Object jsonResultObject;
|
||||
Poco::JSON::Array jsonUsersArray;
|
||||
Poco::JSON::Array::Ptr jsonUsersArray = new Poco::JSON::Array;
|
||||
|
||||
for (auto it = results.begin(); it != results.end(); it++) {
|
||||
jsonUsersArray.add((*it)->getJson());
|
||||
jsonUsersArray->add((*it)->getJson());
|
||||
(*it)->release();
|
||||
}
|
||||
results.clear();
|
||||
|
||||
@ -227,6 +227,19 @@ Poco::JSON::Object* JsonRequestHandler::checkAndLoadSession(Poco::Dynamic::Var p
|
||||
return stateError("error parsing query params, Poco Error", ex.displayText());
|
||||
}
|
||||
}
|
||||
else if (params.type() == typeid(Poco::JSON::Object::Ptr)) {
|
||||
try {
|
||||
Poco::JSON::Object::Ptr paramJsonObject = params.extract<Poco::JSON::Object::Ptr>();
|
||||
auto session_id_obj = paramJsonObject->get("session_id");
|
||||
if (session_id_obj.isEmpty()) {
|
||||
return stateError("missing session_id");
|
||||
}
|
||||
session_id_obj.convert(session_id);
|
||||
}
|
||||
catch (Poco::Exception& ex) {
|
||||
return stateError("Poco Exception by reading session_id", ex.what());
|
||||
}
|
||||
}
|
||||
|
||||
if (!session_id) {
|
||||
return stateError("empty session id");
|
||||
|
||||
@ -19,6 +19,7 @@
|
||||
#include "JsonLoginViaEmailVerificationCode.h"
|
||||
#include "JsonLogout.h"
|
||||
#include "JsonNetworkInfos.h"
|
||||
#include "JsonResetPassword.h"
|
||||
#include "JsonSendEmail.h"
|
||||
#include "JsonAdminEmailVerificationResend.h"
|
||||
#include "JsonGetUserInfos.h"
|
||||
@ -65,7 +66,7 @@ Poco::Net::HTTPRequestHandler* JsonRequestHandlerFactory::createRequestHandler(c
|
||||
|
||||
auto sm = SessionManager::getInstance();
|
||||
Session* s = nullptr;
|
||||
if (!session_id) {
|
||||
if (session_id) {
|
||||
s = sm->getSession(session_id);
|
||||
}
|
||||
|
||||
@ -114,6 +115,9 @@ Poco::Net::HTTPRequestHandler* JsonRequestHandlerFactory::createRequestHandler(c
|
||||
else if (url_first_part == "/sendEmail") {
|
||||
return new JsonSendEmail;
|
||||
}
|
||||
else if (url_first_part == "/resetPassword") {
|
||||
return new JsonResetPassword;
|
||||
}
|
||||
else if (url_first_part == "/logout") {
|
||||
return new JsonLogout(client_host);
|
||||
}
|
||||
|
||||
53
login_server/src/cpp/JSONInterface/JsonResetPassword.cpp
Normal file
53
login_server/src/cpp/JSONInterface/JsonResetPassword.cpp
Normal file
@ -0,0 +1,53 @@
|
||||
#include "JsonResetPassword.h"
|
||||
|
||||
#include "SingletonManager/SessionManager.h"
|
||||
#include "SingletonManager/SingletonTaskObserver.h"
|
||||
|
||||
Poco::JSON::Object* JsonResetPassword::handle(Poco::Dynamic::Var params)
|
||||
{
|
||||
auto result_session_check = checkAndLoadSession(params, false);
|
||||
if (result_session_check) {
|
||||
return result_session_check;
|
||||
}
|
||||
|
||||
std::string password;
|
||||
// if is json object
|
||||
if (params.type() == typeid(Poco::JSON::Object::Ptr)) {
|
||||
Poco::JSON::Object::Ptr paramJsonObject = params.extract<Poco::JSON::Object::Ptr>();
|
||||
try {
|
||||
auto password_obj = paramJsonObject->get("password");
|
||||
if (password_obj.isEmpty()) {
|
||||
return stateError("password missing");
|
||||
}
|
||||
password_obj.convert(password);
|
||||
}
|
||||
catch (Poco::Exception& ex) {
|
||||
return stateError("error parsing json", ex.what());
|
||||
}
|
||||
}
|
||||
auto sm = SessionManager::getInstance();
|
||||
NotificationList errors;
|
||||
if (!sm->checkPwdValidation(password, &errors, LanguageManager::getInstance()->getFreeCatalog(LANG_EN))) {
|
||||
return stateError("password isn't valid", &errors);
|
||||
}
|
||||
auto user = mSession->getNewUser();
|
||||
if (user.isNull() || user->getModel().isNull()) {
|
||||
return stateError("invalid user");
|
||||
}
|
||||
|
||||
auto observer = SingletonTaskObserver::getInstance();
|
||||
auto email_hash = observer->makeHash(user->getModel()->getEmail());
|
||||
|
||||
if (observer->getTaskCount(email_hash, TASK_OBSERVER_PASSWORD_CREATION) > 0) {
|
||||
return stateError("password encryption is already running");
|
||||
}
|
||||
|
||||
auto update_password_result = user->setNewPassword(password);
|
||||
if (update_password_result == 2) {
|
||||
KeyPairEd25519* key_pair = NULL;
|
||||
if (!user->tryLoadPassphraseUserBackup(&key_pair)) {
|
||||
user->setGradidoKeyPair(key_pair);
|
||||
}
|
||||
}
|
||||
return stateSuccess();
|
||||
}
|
||||
20
login_server/src/cpp/JSONInterface/JsonResetPassword.h
Normal file
20
login_server/src/cpp/JSONInterface/JsonResetPassword.h
Normal file
@ -0,0 +1,20 @@
|
||||
#ifndef __JSON_INTERFACE_JSON_RESET_PASSWORD_
|
||||
#define __JSON_INTERFACE_JSON_RESET_PASSWORD_
|
||||
|
||||
#include "JsonRequestHandler.h"
|
||||
|
||||
/*!
|
||||
* @author Dario Rekowski
|
||||
* @date 2021-06-16
|
||||
* @brief reset password, if user has forgetten his password
|
||||
*
|
||||
*/
|
||||
|
||||
class JsonResetPassword : public JsonRequestHandler
|
||||
{
|
||||
public:
|
||||
Poco::JSON::Object* handle(Poco::Dynamic::Var params);
|
||||
|
||||
};
|
||||
|
||||
#endif // __JSON_INTERFACE_JSON_RESET_PASSWORD_
|
||||
@ -171,8 +171,10 @@ Poco::JSON::Object* JsonUpdateUserInfos::handle(Poco::Dynamic::Var params)
|
||||
|
||||
if (str_val.size() > 0)
|
||||
{
|
||||
|
||||
if (!user->hasPassword() || isOldPasswordValid(updates, jsonErrorsArray))
|
||||
if (!user->hasPassword()) {
|
||||
return stateError("login state invalid");
|
||||
}
|
||||
if (isOldPasswordValid(updates, jsonErrorsArray))
|
||||
{
|
||||
NotificationList errors;
|
||||
if (!sm->checkPwdValidation(value.toString(), &errors, LanguageManager::getInstance()->getFreeCatalog(LANG_EN))) {
|
||||
@ -224,9 +226,10 @@ Poco::JSON::Object* JsonUpdateUserInfos::handle(Poco::Dynamic::Var params)
|
||||
result->set("errors", jsonErrorsArray);
|
||||
result->set("valid_values", extractet_values);
|
||||
if (!jsonErrorsArray.size()) {
|
||||
result->set("state", "success");
|
||||
result->set("state", "success");
|
||||
}
|
||||
else {
|
||||
result->set("msg", jsonErrorsArray.get(0));
|
||||
result->set("state", "error");
|
||||
}
|
||||
|
||||
|
||||
@ -1,17 +0,0 @@
|
||||
#include "HederaTaskManager.h"
|
||||
|
||||
HederaTaskManager* HederaTaskManager::getInstance()
|
||||
{
|
||||
static HederaTaskManager one;
|
||||
return &one;
|
||||
}
|
||||
|
||||
HederaTaskManager::HederaTaskManager()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
HederaTaskManager::~HederaTaskManager()
|
||||
{
|
||||
|
||||
}
|
||||
@ -1,23 +0,0 @@
|
||||
#ifndef __GRADIDO_LOGIN_SINGLETON_MANAGER_HEDERA_TASK_MANAGER_H
|
||||
#define __GRADIDO_LOGIN_SINGLETON_MANAGER_HEDERA_TASK_MANAGER_H
|
||||
|
||||
/*!
|
||||
* @author: Dario Rekowski
|
||||
*
|
||||
* @date: 11.09.2020
|
||||
*
|
||||
* @brief: Manage Hedera Task, waiting on Consensus for Hedera Transactions
|
||||
*
|
||||
*/
|
||||
|
||||
class HederaTaskManager
|
||||
{
|
||||
public:
|
||||
~HederaTaskManager();
|
||||
|
||||
static HederaTaskManager* getInstance();
|
||||
protected:
|
||||
HederaTaskManager();
|
||||
};
|
||||
|
||||
#endif //__GRADIDO_LOGIN_SINGLETON_MANAGER_HEDERA_TASK_MANAGER_H
|
||||
@ -42,6 +42,7 @@ int PendingTasksManager::addTask(Poco::AutoPtr<controller::PendingTask> task)
|
||||
if (task.isNull() || !task->getModel()) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
auto model = task->getModel();
|
||||
Poco::ScopedLock<Poco::Mutex> _lock(mWorkMutex);
|
||||
auto pending_task_list = getTaskListForUser(model->getUserId());
|
||||
@ -235,30 +236,3 @@ Poco::AutoPtr<controller::PendingTask> PendingTasksManager::getPendingTask(int p
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
||||
void PendingTasksManager::reportErrorToCommunityServer(Poco::AutoPtr<controller::PendingTask> task, std::string error, std::string errorDetails)
|
||||
{
|
||||
// TODO: choose user specific server
|
||||
JsonRequest phpServerRequest(ServerConfig::g_php_serverHost, ServerConfig::g_phpServerPort);
|
||||
//Poco::Net::NameValueCollection payload;
|
||||
Poco::JSON::Object payload;
|
||||
|
||||
auto task_model = task->getModel();
|
||||
auto user_model = task->getUser()->getModel();
|
||||
|
||||
payload.set("created", task_model->getCreated());
|
||||
payload.set("id", task_model->getID());
|
||||
payload.set("type", task_model->getTaskTypeString());
|
||||
payload.set("public_key", user_model->getPublicKeyHex());
|
||||
payload.set("error", error);
|
||||
payload.set("errorMessage", errorDetails);
|
||||
|
||||
auto ret = phpServerRequest.request("errorInTransaction", payload);
|
||||
if (ret == JSON_REQUEST_RETURN_ERROR)
|
||||
{
|
||||
auto em = ErrorManager::getInstance();
|
||||
em->addError(new Error("PendingTasksManager::reportErrorToCommunityServer", "php server error"));
|
||||
em->getErrors(&phpServerRequest);
|
||||
em->sendErrorsAsEmail();
|
||||
}
|
||||
}
|
||||
|
||||
@ -50,7 +50,6 @@ public:
|
||||
std::vector<Poco::AutoPtr<controller::PendingTask>> getTransactionsUserMustSign(Poco::AutoPtr<controller::User> user);
|
||||
std::vector<Poco::AutoPtr<controller::PendingTask>> getTransactionSomeoneMustSign(Poco::AutoPtr<controller::User> user);
|
||||
|
||||
void reportErrorToCommunityServer(Poco::AutoPtr<controller::PendingTask> task, std::string error, std::string errorDetails);
|
||||
|
||||
protected:
|
||||
PendingTasksManager();
|
||||
|
||||
@ -57,17 +57,17 @@ bool SessionManager::init()
|
||||
//case VALIDATE_ONLY_URL: mValidations[i] = new Poco::RegularExpression("^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}$"); break;
|
||||
case VALIDATE_ONLY_URL: mValidations[i] = new Poco::RegularExpression("^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\/?"); break;
|
||||
case VALIDATE_HAS_SPECIAL_CHARACTER: mValidations[i] = new Poco::RegularExpression(".*[@$!%*?&+-].*"); break;
|
||||
case VALIDATE_HAS_UPPERCASE_LETTER:
|
||||
mValidations[i] = new Poco::RegularExpression(".*[A-Z].*");
|
||||
case VALIDATE_HAS_UPPERCASE_LETTER:
|
||||
mValidations[i] = new Poco::RegularExpression(".*[A-Z].*");
|
||||
ServerConfig::g_ServerKeySeed->put(i, DRRandom::r64());
|
||||
break;
|
||||
case VALIDATE_HAS_LOWERCASE_LETTER: mValidations[i] = new Poco::RegularExpression(".*[a-z].*"); break;
|
||||
default: printf("[SessionManager::%s] unknown validation type\n", __FUNCTION__);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
mInitalized = true;
|
||||
|
||||
mInitalized = true;
|
||||
mWorkingMutex.unlock();
|
||||
return true;
|
||||
}
|
||||
@ -98,7 +98,7 @@ void SessionManager::deinitalize()
|
||||
}
|
||||
|
||||
printf("[SessionManager::deinitalize] count of dead locked sessions: %d\n", mDeadLockedSessionCount);
|
||||
|
||||
|
||||
mInitalized = false;
|
||||
mWorkingMutex.unlock();
|
||||
}
|
||||
@ -142,7 +142,7 @@ Session* SessionManager::getNewSession(int* handle)
|
||||
// first check if we have any timeouted session to directly reuse it
|
||||
checkTimeoutSession();
|
||||
|
||||
// lock
|
||||
// lock
|
||||
try {
|
||||
//Poco::Mutex::ScopedLock _lock(mWorkingMutex, 500);
|
||||
mWorkingMutex.tryLock(500);
|
||||
@ -156,8 +156,8 @@ Session* SessionManager::getNewSession(int* handle)
|
||||
//UniLib::controller::TaskPtr checkSessionTimeout(new CheckSessionTimeouted);
|
||||
//checkSessionTimeout->scheduleTask(checkSessionTimeout);
|
||||
|
||||
// check if we have an existing session ready to use
|
||||
while (mEmptyRequestStack.size() > 0) {
|
||||
// check if we have an existing session ready to use
|
||||
while (mEmptyRequestStack.size() > 0) {
|
||||
int local_handle = mEmptyRequestStack.top();
|
||||
mEmptyRequestStack.pop();
|
||||
auto resultIt = mRequestSessionMap.find(local_handle);
|
||||
@ -186,10 +186,10 @@ Session* SessionManager::getNewSession(int* handle)
|
||||
|
||||
mRequestSessionMap.erase(local_handle);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// else create new RequestSession Object
|
||||
// calculate random handle
|
||||
// check if already exist, if get new
|
||||
@ -211,7 +211,7 @@ Session* SessionManager::getNewSession(int* handle)
|
||||
//printf("[SessionManager::getNewSession] handle: %ld, sum: %u\n", newHandle, mRequestSessionMap.size());
|
||||
mWorkingMutex.unlock();
|
||||
return requestSession;
|
||||
|
||||
|
||||
|
||||
//return nullptr;
|
||||
}
|
||||
@ -231,7 +231,7 @@ bool SessionManager::releaseSession(int requestHandleSession)
|
||||
return false;
|
||||
}
|
||||
//mWorkingMutex.lock();
|
||||
|
||||
|
||||
auto it = mRequestSessionMap.find(requestHandleSession);
|
||||
if (it == mRequestSessionMap.end()) {
|
||||
//printf("[SessionManager::releaseRequestSession] requestSession with handle: %d not found\n", requestHandleSession);
|
||||
@ -242,16 +242,15 @@ bool SessionManager::releaseSession(int requestHandleSession)
|
||||
|
||||
|
||||
// delete session, not reuse as workaround for server freeze bug
|
||||
mRequestSessionMap.erase(requestHandleSession);
|
||||
/*mRequestSessionMap.erase(requestHandleSession);
|
||||
delete session;
|
||||
mWorkingMutex.unlock();
|
||||
return true;
|
||||
|
||||
*/
|
||||
|
||||
|
||||
// check if dead locked
|
||||
if (session->tryLock()) {
|
||||
session->unlock();
|
||||
if (!session->isDeadLocked()) {
|
||||
session->reset();
|
||||
session->setActive(false);
|
||||
}
|
||||
@ -264,9 +263,9 @@ bool SessionManager::releaseSession(int requestHandleSession)
|
||||
mWorkingMutex.unlock();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// change request handle we don't want session hijacking
|
||||
|
||||
|
||||
// hardcoded disabled session max
|
||||
if (mEmptyRequestStack.size() > 100) {
|
||||
mRequestSessionMap.erase(requestHandleSession);
|
||||
@ -285,11 +284,11 @@ bool SessionManager::releaseSession(int requestHandleSession)
|
||||
mWorkingMutex.unlock();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
session->setHandle(newHandle);
|
||||
mRequestSessionMap.insert(std::pair<int, Session*>(newHandle, session));
|
||||
mEmptyRequestStack.push(newHandle);
|
||||
|
||||
|
||||
mWorkingMutex.unlock();
|
||||
return true;
|
||||
}
|
||||
@ -354,13 +353,11 @@ Session* SessionManager::getSession(int handle)
|
||||
}
|
||||
if (0 == handle) return nullptr;
|
||||
Session* result = nullptr;
|
||||
try {
|
||||
//Poco::Mutex::ScopedLock _lock(mWorkingMutex, 500);
|
||||
mWorkingMutex.tryLock(500);
|
||||
}
|
||||
catch (Poco::TimeoutException &ex) {
|
||||
printf("[SessionManager::getSession] exception timout mutex: %s\n", ex.displayText().data());
|
||||
return result;
|
||||
|
||||
|
||||
if(!mWorkingMutex.tryLock(500)) {
|
||||
printf("[SessionManager::getSession] exception timout mutex: \n");
|
||||
return result;
|
||||
}
|
||||
//mWorkingMutex.lock();
|
||||
auto it = mRequestSessionMap.find(handle);
|
||||
@ -376,14 +373,12 @@ Session* SessionManager::getSession(int handle)
|
||||
return nullptr;
|
||||
}
|
||||
if (0 == iResult) {
|
||||
//printf("[SessionManager::getSession] session isn't active\n");
|
||||
mWorkingMutex.unlock();
|
||||
return nullptr;
|
||||
}
|
||||
//result->setActive(true);
|
||||
result->updateTimeout();
|
||||
}
|
||||
//printf("[SessionManager::getSession] handle: %ld\n", handle);
|
||||
mWorkingMutex.unlock();
|
||||
return result;
|
||||
}
|
||||
@ -418,8 +413,8 @@ Session* SessionManager::findByUserId(int userId)
|
||||
}
|
||||
//mWorkingMutex.lock();
|
||||
for (auto it = mRequestSessionMap.begin(); it != mRequestSessionMap.end(); it++) {
|
||||
while (it->second->isDeadLocked())
|
||||
{
|
||||
while (it->second->isDeadLocked())
|
||||
{
|
||||
it = mRequestSessionMap.erase(it);
|
||||
mDeadLockedSessionCount++;
|
||||
auto em = ErrorManager::getInstance();
|
||||
@ -484,7 +479,7 @@ std::vector<Session*> SessionManager::findAllByUserId(int userId)
|
||||
Session* SessionManager::findByEmail(const std::string& email)
|
||||
{
|
||||
assert(email.size() > 0);
|
||||
|
||||
|
||||
try {
|
||||
//Poco::Mutex::ScopedLock _lock(mWorkingMutex, 500);
|
||||
mWorkingMutex.tryLock(500);
|
||||
@ -605,23 +600,23 @@ bool SessionManager::checkPwdValidation(const std::string& pwd, NotificationList
|
||||
|
||||
if (!isValid(pwd, VALIDATE_PASSWORD)) {
|
||||
errorReciver->addError(new Error(
|
||||
lang->gettext("Password"),
|
||||
lang->gettext("Password"),
|
||||
lang->gettext("Please enter a valid password with at least 8 characters, upper and lower case letters, at least one number and one special character (@$!%*?&+-_)!")));
|
||||
|
||||
// @$!%*?&+-
|
||||
if (pwd.size() < 8) {
|
||||
errorReciver->addError(new Error(
|
||||
lang->gettext("Password"),
|
||||
lang->gettext("Password"),
|
||||
lang->gettext("Your password is to short!")));
|
||||
}
|
||||
else if (!isValid(pwd, VALIDATE_HAS_LOWERCASE_LETTER)) {
|
||||
errorReciver->addError(new Error(
|
||||
lang->gettext("Password"),
|
||||
lang->gettext("Password"),
|
||||
lang->gettext("Your password does not contain lowercase letters!")));
|
||||
}
|
||||
else if (!isValid(pwd, VALIDATE_HAS_UPPERCASE_LETTER)) {
|
||||
errorReciver->addError(new Error(
|
||||
lang->gettext("Password"),
|
||||
lang->gettext("Password"),
|
||||
lang->gettext("Your password does not contain any capital letters!")));
|
||||
}
|
||||
else if (!isValid(pwd, VALIDATE_HAS_NUMBER)) {
|
||||
|
||||
@ -65,11 +65,11 @@ namespace controller {
|
||||
std::vector<std::string> fieldNames = { "first_name", "last_name", "email", "email_checked" };
|
||||
auto session = cm->getConnection(CONNECTION_MYSQL_LOGIN_SERVER);
|
||||
std::vector<model::table::UserTuple> results;
|
||||
// Poco::Tuple<int, std::string, std::string, std::string, std::string, std::string, Poco::Nullable<Poco::Data::BLOB>, Poco::DateTime, int, int, int> UserTuple;
|
||||
|
||||
using namespace Poco::Data::Keywords;
|
||||
Poco::Data::Statement select(session);
|
||||
// typedef Poco::Tuple<int, std::string, std::string, std::string, std::string, Poco::Nullable<Poco::Data::BLOB>, Poco::DateTime, int, int, int> UserTuple;
|
||||
select << "SELECT id, first_name, last_name, email, username, pubkey, created, email_checked, disabled, group_id FROM " << db->getTableName();
|
||||
select << "SELECT id, first_name, last_name, email, username, description, pubkey, created, email_checked, disabled, group_id FROM " << db->getTableName();
|
||||
select << " where email_checked = 0 ";
|
||||
select, into(resultFromDB);
|
||||
if (searchString != "") {
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/*!
|
||||
|
||||
|
||||
\brief Container Wrapper class for mutex protected container
|
||||
changed to poco mutex for gradido login server
|
||||
default mutex from poco is recursive so it is some heavy thing
|
||||
@ -47,7 +47,7 @@ namespace UniLib {
|
||||
// \return false if mutex was locked from another thread
|
||||
bool tryLock();
|
||||
|
||||
inline void unlock() { mLastSucceededLock = ""; mWorkMutex.unlock(); }
|
||||
inline void unlock() { mWorkMutex.unlock(); mLastSucceededLock = ""; }
|
||||
|
||||
inline const std::string& getLastSucceededLock() { return mLastSucceededLock; }
|
||||
protected:
|
||||
@ -58,4 +58,4 @@ namespace UniLib {
|
||||
}
|
||||
}
|
||||
|
||||
#endif //__DR_UNIVERSUM_LIB_LIB_MULTITHREAD_CONTAINER_H__
|
||||
#endif //__DR_UNIVERSUM_LIB_LIB_MULTITHREAD_CONTAINER_H__
|
||||
|
||||
@ -84,29 +84,30 @@ void Session::reset()
|
||||
int Session::isActive()
|
||||
{
|
||||
int ret = 0;
|
||||
try {
|
||||
mWorkMutex.tryLock(100);
|
||||
}
|
||||
catch (Poco::TimeoutException &ex) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if(!mWorkMutex.tryLock(100)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret = (int)mActive;
|
||||
unlock();
|
||||
|
||||
try {
|
||||
unlock();
|
||||
} catch(Poco::SystemException& ex) {
|
||||
addError(new ParamError("Session::isActive", "exception unlocking mutex", ex.what()));
|
||||
return -1;
|
||||
}
|
||||
return ret;
|
||||
|
||||
}
|
||||
|
||||
bool Session::isDeadLocked()
|
||||
{
|
||||
try {
|
||||
mWorkMutex.tryLock(200);
|
||||
unlock();
|
||||
return false;
|
||||
}
|
||||
catch (Poco::Exception& ex) {
|
||||
|
||||
}
|
||||
return true;
|
||||
if(!mWorkMutex.tryLock(200)) {
|
||||
return true;
|
||||
};
|
||||
unlock();
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Session::setActive(bool active)
|
||||
@ -922,12 +923,11 @@ bool Session::useOrGeneratePassphrase(const std::string& passphase)
|
||||
bool Session::lastTransactionTheSame(Poco::AutoPtr<model::gradido::Transaction> newTransaction)
|
||||
{
|
||||
assert(!newTransaction.isNull());
|
||||
lock();
|
||||
Poco::ScopedLock<Poco::Mutex> _lock(mWorkMutex);
|
||||
if (mLastTransaction.isNull()) {
|
||||
return false;
|
||||
}
|
||||
bool result = mLastTransaction->isTheSameTransaction(newTransaction);
|
||||
unlock();
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@ -171,13 +171,13 @@ Gradido Login-Server\n\
|
||||
switch (mType) {
|
||||
case EMAIL_DEFAULT:
|
||||
mailMessage->addRecipient(adminRecipient);
|
||||
mailMessage->setSubject(langCatalog->gettext_str("Default Email Subject"));
|
||||
mailMessage->setSubject(langCatalog->gettext("Default Email Subject"));
|
||||
mailMessage->addContent(new Poco::Net::StringPartSource(langCatalog->gettext_str("Empty Email Content"), mt.toString()));
|
||||
break;
|
||||
|
||||
case EMAIL_ERROR:
|
||||
mailMessage->addRecipient(adminRecipient);
|
||||
mailMessage->setSubject(langCatalog->gettext_str("Error from Gradido Login Server"));
|
||||
mailMessage->setSubject(langCatalog->gettext("Error from Gradido Login Server"));
|
||||
mailMessage->addContent(new Poco::Net::StringPartSource(mErrorHtml, mt.toString()));
|
||||
break;
|
||||
|
||||
@ -197,7 +197,7 @@ Gradido Login-Server\n\
|
||||
return false;
|
||||
}
|
||||
mailMessage->addRecipient(Poco::Net::MailRecipient(Poco::Net::MailRecipient::PRIMARY_RECIPIENT, mUser->getModel()->getEmail()));
|
||||
mailMessage->setSubject(langCatalog->gettext_str("Gradido: E-Mail Verification"));
|
||||
mailMessage->setSubject(langCatalog->gettext("Gradido: E-Mail Verification"));
|
||||
|
||||
messageTemplate = EmailText_emailVerification;
|
||||
if (EMAIL_USER_VERIFICATION_CODE_RESEND == mType) {
|
||||
@ -243,7 +243,7 @@ Gradido Login-Server\n\
|
||||
return false;
|
||||
}
|
||||
mailMessage->addRecipient(Poco::Net::MailRecipient(Poco::Net::MailRecipient::PRIMARY_RECIPIENT, mUser->getModel()->getEmail()));
|
||||
mailMessage->setSubject(langCatalog->gettext_str(u8"Gradido: Passwort zurücksetzen"));
|
||||
mailMessage->setSubject(langCatalog->gettext("Gradido: Reset Password"));
|
||||
|
||||
mailMessage->addContent(
|
||||
new Poco::Net::StringPartSource(replaceUserNamesAndLink(
|
||||
|
||||
@ -358,6 +358,10 @@ namespace model {
|
||||
}
|
||||
//UniLib::controller::TaskPtr transaction_send_task(new SendTransactionTask(Poco::AutoPtr<Transaction>(this, true)));
|
||||
//transaction_send_task->scheduleTask(transaction_send_task);
|
||||
auto pt = PendingTasksManager::getInstance();
|
||||
|
||||
pt->removeTask(Poco::AutoPtr<Transaction>(this, true));
|
||||
deleteFromDB();
|
||||
return 1 == runSendTransaction();
|
||||
//return true;
|
||||
}
|
||||
@ -507,9 +511,6 @@ namespace model {
|
||||
addError(new ParamError(function_name, "unknown error", TransactionValidationToString(result)));
|
||||
//sendErrorsAsEmail();
|
||||
}
|
||||
|
||||
auto pt = PendingTasksManager::getInstance();
|
||||
pt->reportErrorToCommunityServer(Poco::AutoPtr<Transaction>(this, true), error_name, error_description);
|
||||
addError(new ParamError(function_name, error_name, error_description));
|
||||
}
|
||||
return -1;
|
||||
@ -563,13 +564,13 @@ namespace model {
|
||||
auto result = json_request.request("putTransaction", param);
|
||||
json_request.getWarnings(&json_request);
|
||||
|
||||
if (JSON_REQUEST_RETURN_OK == result)
|
||||
{
|
||||
if (JSON_REQUEST_RETURN_OK == result)
|
||||
{
|
||||
if (!json_request.errorCount()) {
|
||||
finishSuccess();
|
||||
}
|
||||
else {
|
||||
getErrors(&json_request);
|
||||
getErrors(&json_request);
|
||||
return -1;
|
||||
}
|
||||
return 1;
|
||||
|
||||
@ -56,9 +56,9 @@ namespace model {
|
||||
try {
|
||||
auto res = select.execute();
|
||||
if (1 == res) { return true; }
|
||||
|
||||
|
||||
}
|
||||
catch (Poco::Exception& ex) {
|
||||
catch (Poco::Exception& ex) {
|
||||
addError(new ParamError(getTableName(), "mysql error by select id", ex.displayText().data()));
|
||||
addError(new ParamError(getTableName(), "data set: ", toString().data()));
|
||||
}
|
||||
@ -126,20 +126,22 @@ namespace model {
|
||||
{
|
||||
Poco::ScopedLock<Poco::Mutex> _lock(mWorkMutex);
|
||||
mReferenceCount++;
|
||||
//printf("[ModelBase::duplicate] new value: %d\n", mReferenceCount);
|
||||
}
|
||||
|
||||
void ModelBase::release()
|
||||
{
|
||||
Poco::ScopedLock<Poco::Mutex> _lock(mWorkMutex);
|
||||
if(mReferenceCount <= 0) {
|
||||
throw Poco::Exception("ModelBase already released", getTableName());
|
||||
}
|
||||
|
||||
Poco::ScopedLock<Poco::Mutex> _lock(mWorkMutex);
|
||||
|
||||
mReferenceCount--;
|
||||
//printf("[ModelBase::release] new value: %d\n", mReferenceCount);
|
||||
|
||||
if (0 == mReferenceCount) {
|
||||
|
||||
delete this;
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Poco::Data::Statement ModelBase::_loadFromDB(Poco::Data::Session session, const std::vector<std::string>& fieldNames, MysqlConditionType conditionType/* = MYSQL_CONDITION_AND*/)
|
||||
@ -180,7 +182,7 @@ namespace model {
|
||||
Poco::Mutex& timeMutex = ServerConfig::g_TimeMutex;
|
||||
|
||||
int year, month, day, hour, minute, second;
|
||||
// ex: 2009-10-29
|
||||
// ex: 2009-10-29
|
||||
if (sscanf(decodedDateString.data(), "%d-%d-%dT%d:%dZ", &year, &month, &day, &hour, &minute) != EOF) {
|
||||
time_t rawTime;
|
||||
time(&rawTime);
|
||||
|
||||
@ -70,7 +70,11 @@ namespace model
|
||||
{
|
||||
SHARED_LOCK;
|
||||
temp = mResultJsonString;
|
||||
if(!mResultJsonString.size()) {
|
||||
return new Poco::JSON::Object;
|
||||
}
|
||||
}
|
||||
|
||||
Poco::JSON::Parser parser;
|
||||
Poco::Dynamic::Var result;
|
||||
try
|
||||
|
||||
144
login_server/src/cpp/test/JSONInterface/TestJsonGetUsers.cpp
Normal file
144
login_server/src/cpp/test/JSONInterface/TestJsonGetUsers.cpp
Normal file
@ -0,0 +1,144 @@
|
||||
#include "gtest/gtest.h"
|
||||
#include "SingletonManager/SessionManager.h"
|
||||
|
||||
#include "Poco/JSON/Object.h"
|
||||
|
||||
#include "JSONInterface/JsonGetUsers.h"
|
||||
|
||||
TEST(TestJsonGetUsers, NO_ADMIN)
|
||||
{
|
||||
auto sm = SessionManager::getInstance();
|
||||
auto session = sm->getNewSession();
|
||||
auto user = controller::User::create();
|
||||
user->load("d_schultz32@gmx.de");
|
||||
session->setUser(user);
|
||||
|
||||
JsonGetUsers jsonCall;
|
||||
Poco::JSON::Object::Ptr params = new Poco::JSON::Object;
|
||||
params->set("search", "b");
|
||||
params->set("session_id", session->getHandle());
|
||||
auto result = jsonCall.handle(params);
|
||||
|
||||
auto state = result->get("state");
|
||||
ASSERT_FALSE(state.isEmpty());
|
||||
ASSERT_TRUE(state.isString());
|
||||
ASSERT_EQ(state.toString(), "wrong role");
|
||||
|
||||
auto msg = result->get("msg");
|
||||
ASSERT_FALSE(msg.isEmpty());
|
||||
ASSERT_TRUE(msg.isString());
|
||||
ASSERT_EQ(msg.toString(), "User hasn't correct role");
|
||||
|
||||
sm->releaseSession(session);
|
||||
}
|
||||
|
||||
TEST(TestJsonGetUsers, INVALID_SESSION)
|
||||
{
|
||||
|
||||
JsonGetUsers jsonCall;
|
||||
Poco::JSON::Object::Ptr params = new Poco::JSON::Object;
|
||||
params->set("search", "");
|
||||
params->set("session_id", rand());
|
||||
auto result = jsonCall.handle(params);
|
||||
|
||||
auto state = result->get("state");
|
||||
ASSERT_FALSE(state.isEmpty());
|
||||
ASSERT_TRUE(state.isString());
|
||||
ASSERT_EQ(state.toString(), "not found");
|
||||
|
||||
auto msg = result->get("msg");
|
||||
ASSERT_FALSE(msg.isEmpty());
|
||||
ASSERT_TRUE(msg.isString());
|
||||
ASSERT_EQ(msg.toString(), "Session not found");
|
||||
}
|
||||
|
||||
TEST(TestJsonGetUsers, EMPTY_SEARCH)
|
||||
{
|
||||
auto sm = SessionManager::getInstance();
|
||||
auto session = sm->getNewSession();
|
||||
auto user = controller::User::create();
|
||||
user->load("Tiger_231@yahoo.com");
|
||||
session->setUser(user);
|
||||
|
||||
JsonGetUsers jsonCall;
|
||||
Poco::JSON::Object::Ptr params = new Poco::JSON::Object;
|
||||
params->set("search", "");
|
||||
params->set("session_id", session->getHandle());
|
||||
auto result = jsonCall.handle(params);
|
||||
|
||||
auto state = result->get("state");
|
||||
ASSERT_FALSE(state.isEmpty());
|
||||
ASSERT_TRUE(state.isString());
|
||||
ASSERT_EQ(state.toString(), "not found");
|
||||
|
||||
auto msg = result->get("msg");
|
||||
ASSERT_FALSE(msg.isEmpty());
|
||||
ASSERT_TRUE(msg.isString());
|
||||
ASSERT_EQ(msg.toString(), "Search string is empty and account_state is all or empty");
|
||||
|
||||
sm->releaseSession(session);
|
||||
}
|
||||
|
||||
TEST(TestJsonGetUsers, VALID_SEARCH)
|
||||
{
|
||||
auto sm = SessionManager::getInstance();
|
||||
auto session = sm->getNewSession();
|
||||
auto user = controller::User::create();
|
||||
user->load("Tiger_231@yahoo.com");
|
||||
session->setUser(user);
|
||||
|
||||
JsonGetUsers jsonCall;
|
||||
Poco::JSON::Object::Ptr params = new Poco::JSON::Object;
|
||||
params->set("search", "a");
|
||||
params->set("session_id", session->getHandle());
|
||||
auto result = jsonCall.handle(params);
|
||||
|
||||
auto state = result->get("state");
|
||||
ASSERT_FALSE(state.isEmpty());
|
||||
ASSERT_TRUE(state.isString());
|
||||
ASSERT_EQ(state.toString(), "success");
|
||||
|
||||
auto msg = result->get("msg");
|
||||
ASSERT_TRUE(msg.isEmpty());
|
||||
|
||||
EXPECT_TRUE(result->isArray("users"));
|
||||
auto users = result->getArray("users");
|
||||
ASSERT_FALSE(users.isNull());
|
||||
|
||||
ASSERT_EQ(users->size(), 6);
|
||||
|
||||
sm->releaseSession(session);
|
||||
}
|
||||
|
||||
TEST(TestJsonGetUsers, VALID_STATE_SEARCH)
|
||||
{
|
||||
auto sm = SessionManager::getInstance();
|
||||
auto session = sm->getNewSession();
|
||||
auto user = controller::User::create();
|
||||
user->load("Tiger_231@yahoo.com");
|
||||
session->setUser(user);
|
||||
|
||||
JsonGetUsers jsonCall;
|
||||
Poco::JSON::Object::Ptr params = new Poco::JSON::Object;
|
||||
params->set("search", "");
|
||||
params->set("account_state", "email not activated");
|
||||
params->set("session_id", session->getHandle());
|
||||
auto result = jsonCall.handle(params);
|
||||
|
||||
auto state = result->get("state");
|
||||
ASSERT_FALSE(state.isEmpty());
|
||||
ASSERT_TRUE(state.isString());
|
||||
ASSERT_EQ(state.toString(), "success");
|
||||
|
||||
auto msg = result->get("msg");
|
||||
ASSERT_TRUE(msg.isEmpty());
|
||||
|
||||
EXPECT_TRUE(result->isArray("users"));
|
||||
auto users = result->getArray("users");
|
||||
ASSERT_FALSE(users.isNull());
|
||||
|
||||
ASSERT_EQ(users->size(), 1);
|
||||
|
||||
sm->releaseSession(session);
|
||||
}
|
||||
|
||||
@ -0,0 +1,100 @@
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
#include "JSONInterface/JsonResetPassword.h"
|
||||
#include "TestJsonResetPassword.h"
|
||||
#include "lib/Profiler.h"
|
||||
|
||||
|
||||
void TestJsonResetPassword::SetUp()
|
||||
{
|
||||
auto sm = SessionManager::getInstance();
|
||||
//sm->init();
|
||||
mUserSession = sm->getNewSession();
|
||||
auto user = controller::User::create();
|
||||
user->load("Nikola_Tesla@email.de");
|
||||
mUserSession->setUser(user);
|
||||
}
|
||||
|
||||
void TestJsonResetPassword::TearDown()
|
||||
{
|
||||
auto sm = SessionManager::getInstance();
|
||||
if (!mUserSession) {
|
||||
sm->releaseSession(mUserSession);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
TEST_F(TestJsonResetPassword, WithoutSession)
|
||||
{
|
||||
JsonResetPassword jsonCall;
|
||||
Poco::JSON::Object::Ptr params = new Poco::JSON::Object;
|
||||
params->set("password", "ashze_Sja/63");
|
||||
auto result = jsonCall.handle(params);
|
||||
|
||||
auto state = result->get("state");
|
||||
ASSERT_FALSE(state.isEmpty());
|
||||
ASSERT_TRUE(state.isString());
|
||||
ASSERT_EQ(state.toString(), "error");
|
||||
|
||||
auto msg = result->get("msg");
|
||||
ASSERT_FALSE(msg.isEmpty());
|
||||
ASSERT_TRUE(msg.isString());
|
||||
ASSERT_EQ(msg.toString(), "missing session_id");
|
||||
|
||||
}
|
||||
|
||||
TEST_F(TestJsonResetPassword, WithoutPassword)
|
||||
{
|
||||
JsonResetPassword jsonCall;
|
||||
Poco::JSON::Object::Ptr params = new Poco::JSON::Object;
|
||||
params->set("session_id", mUserSession->getHandle());
|
||||
auto result = jsonCall.handle(params);
|
||||
|
||||
auto state = result->get("state");
|
||||
ASSERT_FALSE(state.isEmpty());
|
||||
ASSERT_TRUE(state.isString());
|
||||
ASSERT_EQ(state.toString(), "error");
|
||||
|
||||
auto msg = result->get("msg");
|
||||
ASSERT_FALSE(msg.isEmpty());
|
||||
ASSERT_TRUE(msg.isString());
|
||||
ASSERT_EQ(msg.toString(), "password missing");
|
||||
}
|
||||
|
||||
TEST_F(TestJsonResetPassword, InvalidPassword)
|
||||
{
|
||||
JsonResetPassword jsonCall;
|
||||
Poco::JSON::Object::Ptr params = new Poco::JSON::Object;
|
||||
params->set("session_id", mUserSession->getHandle());
|
||||
params->set("password", "ash");
|
||||
auto result = jsonCall.handle(params);
|
||||
|
||||
auto state = result->get("state");
|
||||
ASSERT_FALSE(state.isEmpty());
|
||||
ASSERT_TRUE(state.isString());
|
||||
if ((ServerConfig::g_AllowUnsecureFlags & ServerConfig::UNSECURE_ALLOW_ALL_PASSWORDS) == ServerConfig::UNSECURE_ALLOW_ALL_PASSWORDS) {
|
||||
ASSERT_EQ(state.toString(), "success");
|
||||
}
|
||||
else {
|
||||
ASSERT_EQ(state.toString(), "error");
|
||||
|
||||
auto msg = result->get("msg");
|
||||
ASSERT_FALSE(msg.isEmpty());
|
||||
ASSERT_TRUE(msg.isString());
|
||||
ASSERT_EQ(msg.toString(), "password isn't valid");
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(TestJsonResetPassword, ValidPassword)
|
||||
{
|
||||
JsonResetPassword jsonCall;
|
||||
Poco::JSON::Object::Ptr params = new Poco::JSON::Object;
|
||||
params->set("session_id", mUserSession->getHandle());
|
||||
params->set("password", "hath6/&Sja");
|
||||
auto result = jsonCall.handle(params);
|
||||
|
||||
auto state = result->get("state");
|
||||
ASSERT_FALSE(state.isEmpty());
|
||||
ASSERT_TRUE(state.isString());
|
||||
ASSERT_EQ(state.toString(), "success");
|
||||
}
|
||||
@ -0,0 +1,20 @@
|
||||
#ifndef __GRADIDO_LOGIN_SERVER_TEST_JSON_INTERFACE_TEST_JSON_RESET_PASSWORD_H
|
||||
#define __GRADIDO_LOGIN_SERVER_TEST_JSON_INTERFACE_TEST_JSON_RESET_PASSWORD_H
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
#include "SingletonManager/SessionManager.h"
|
||||
|
||||
#include "Poco/JSON/Object.h"
|
||||
|
||||
class TestJsonResetPassword : public ::testing::Test
|
||||
{
|
||||
|
||||
protected:
|
||||
void SetUp() override;
|
||||
void TearDown() override;
|
||||
|
||||
Session* mUserSession;
|
||||
|
||||
};
|
||||
|
||||
#endif //__GRADIDO_LOGIN_SERVER_TEST_JSON_INTERFACE_TEST_JSON_RESET_PASSWORD_H
|
||||
@ -241,16 +241,22 @@ TEST_F(TestJsonUpdateUserInfos, PasswordNotSecureEnough)
|
||||
delete result;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
TEST_F(TestJsonUpdateUserInfos, PasswordCorrect)
|
||||
{
|
||||
JsonUpdateUserInfos jsonCall(mUserSession);
|
||||
ASSERT_EQ(mUserSession->loadUser("Jeet_bb@gmail.com", "TestP4ssword&H"), USER_COMPLETE);
|
||||
|
||||
Poco::JSON::Object::Ptr update = new Poco::JSON::Object;
|
||||
|
||||
update->set("User.password", "uasjUs7ZS/as12");
|
||||
update->set("User.password_old", "TestP4ssword&H");
|
||||
|
||||
if ((ServerConfig::g_AllowUnsecureFlags & ServerConfig::UNSECURE_ALLOW_ALL_PASSWORDS) == ServerConfig::UNSECURE_ALLOW_ALL_PASSWORDS) {
|
||||
ASSERT_EQ(mUserSession->loadUser("Jeet_bb@gmail.com", "newPassword"), USER_COMPLETE);
|
||||
update->set("User.password_old", "newPassword");
|
||||
}
|
||||
else {
|
||||
ASSERT_EQ(mUserSession->loadUser("Jeet_bb@gmail.com", "TestP4ssword&H"), USER_COMPLETE);
|
||||
update->set("User.password_old", "TestP4ssword&H");
|
||||
}
|
||||
|
||||
auto params = chooseAccount(update);
|
||||
Profiler timeUsed;
|
||||
@ -269,15 +275,13 @@ TEST_F(TestJsonUpdateUserInfos, PasswordCorrect)
|
||||
ASSERT_FALSE(state.isEmpty());
|
||||
ASSERT_TRUE(state.isString());
|
||||
|
||||
|
||||
EXPECT_EQ(valid_values, 1);
|
||||
ASSERT_EQ(error_array.size(), 0);
|
||||
ASSERT_EQ(state.toString(), "success");
|
||||
|
||||
|
||||
delete result;
|
||||
}
|
||||
*/
|
||||
//*/
|
||||
TEST_F(TestJsonUpdateUserInfos, NoChanges)
|
||||
{
|
||||
JsonUpdateUserInfos jsonCall(mUserSession);
|
||||
|
||||
@ -177,9 +177,10 @@ int load(int argc, char* argv[]) {
|
||||
// clean up and fill db
|
||||
std::string tables[] = {
|
||||
"groups",
|
||||
"users"
|
||||
"users",
|
||||
"user_roles"
|
||||
};
|
||||
for (int i = 0; i < 2; i++) {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
if (runMysql("TRUNCATE " + tables[i])) {
|
||||
return -1;
|
||||
}
|
||||
@ -204,7 +205,15 @@ int load(int argc, char* argv[]) {
|
||||
<< "(4, 'Nikola_Tesla@email.de', 'Nikola', 'Tesla', 'Erfinder', 1914014100253540772, 0x1c199421a66070afb28cb7c37de98865b28924bff26161bb65faaf5695050ee3, 0xe38ca460ca748954b29d79f0e943eed3ba85e7e13b18f69349666e31a8e3b06c9df105171796b37b4201895a2f3fe8ec8bf58a181700caaa5752a94a968c50e90ebb6280002a056126b2055ff75d69d1, '2020-02-20 16:05:46', 1, 0, 'de', 0, 1), "
|
||||
<< "(5, 'Elfenhausen@arcor.de', 'Thomas', 'Markuk', 'Elf', 8105871797752167168, 0x98d703f0ea1def3ef9e6265a76281d125a94c80665425bd7a844580ec1a2ce98, 0x63612a1d07d78a0c945d765a10a30d9de2be602e79e3f39268d731bc6f7fa945d7d04c638000bae089ac058263f52e7c1f2c3550b35b5727e41523f2f592781add65d12b8b8c0b3226f32174cfa1bcee, '2020-02-20 16:05:46', 1, 0, 'de', 0, 1), "
|
||||
<< "(6, 'coin-info12@gradido.net', 'coin-info12', 'Test', 'Test Username', 9005874071610817324, 0xb3ee1c82a9877f664d05364106e259621b2e203bfbb5323edb7b597051efecc2, 0xa039da7d59e2475dd1aaa635f803ec1aeffc2506e7a96a934bf8d7cf4ac2a96dc962d4e1bdf8e11c5ce7e18189edc36014b89e9e72628004ec5901be6c407a955efb5142a1ee9a2f3aed888125a44aa2, '2020-02-20 16:05:47', 1, 0, 'de', 0, 1), "
|
||||
<< "(7, 'AlexWesper@gmail.com', 'Alex', 'Wesper', 'Wespe', 7264393213873828644, 0x735a5c22ebe84ab1d6453991d50019b677b82b0663b023c30127ec906ee9b59a, 0xaec30051ad3ab2d2132a76e9dfe5a396d2dfbcc83a4eb27223b4da8803893959af9e29c6963f9e73eddc447cb3d3995527b94054e7fdecd7d5f8cb45c3954ff9bb2c9e0374f2124b3170301f990c5d7d, '2020-02-20 16:05:47', 1, 0, 'de', 0, 1); ";
|
||||
<< "(7, 'AlexWesper@gmail.com', 'Alex', 'Wesper', 'Wespe', 7264393213873828644, 0x735a5c22ebe84ab1d6453991d50019b677b82b0663b023c30127ec906ee9b59a, 0xaec30051ad3ab2d2132a76e9dfe5a396d2dfbcc83a4eb27223b4da8803893959af9e29c6963f9e73eddc447cb3d3995527b94054e7fdecd7d5f8cb45c3954ff9bb2c9e0374f2124b3170301f990c5d7d, '2020-02-20 16:05:47', 0, 0, 'de', 0, 1); ";
|
||||
if (runMysql(ss.str())) {
|
||||
return -1;
|
||||
}
|
||||
ss.str(std::string());
|
||||
|
||||
ss << "INSERT INTO `user_roles` (`id`, `user_id`, `role_id`) VALUES"
|
||||
<< "(1, 3, 1);";
|
||||
|
||||
if (runMysql(ss.str())) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -80,6 +80,7 @@ enum PageState {
|
||||
//
|
||||
if(transaction && transaction->getModel()->getUserId() == user_model->getID())
|
||||
{
|
||||
pt->removeTask(pending_task);
|
||||
transaction->deleteFromDB();
|
||||
transaction = nullptr;
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "gradido",
|
||||
"version": "1.0.2",
|
||||
"version": "1.1.1",
|
||||
"description": "Gradido",
|
||||
"main": "index.js",
|
||||
"repository": "git@github.com:gradido/gradido.git",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user